-Datei%20bei%20CMD%20nicht%20gefunden.png)
Das hier ist also mein Dockerfile:
FROM alpine
RUN apk add --update --upgrade --no-cache mysql mysql-client
RUN rm -rf /etc/my.cnf /etc/mysql/* /etc/mysql.d/ && \
mkdir -p /var/lib/mysql /var/run/mysqld && \
chown -R mysql /var/lib/mysql /run/mysqld && \
chgrp -R mysql /var/lib/mysql /run/mysqld && \
mysql_install_db --user=mysql --ldata=/var
EXPOSE 3306
USER mysql
CMD ["sh", "mysqld_safe --data=/var"]
Mein Problem ist, dass der Container nicht gefunden wird, wenn ich ihn mit dem Image ausführe mysqld_safe
. Aber wenn ich den Befehl manuell wie folgt ausführe: docker run mysql mysqld_safe --data=/var
funktioniert es! Ich versuche, die Docker-Datei mit zu ändern:
CMD ["sh", "cat -"]
um zu sehen, ob das Problem beim mysqld_safe
Befehl liegt, aber hier dasselbe Problem, er wird nicht gefunden cat
, außer wenn ich ihn mit ausführe docker run mysql cat -
.
Kommt das Problem von busybox
Alpine oder von PATH? Ich habe im Moment keine Ahnung und brauche Ihre Hilfe.
Antwort1
Ihnen fehlt das -c
Flag sh
, das angibt, dass das nächste Argument an die Shell analysiert/ausgeführt werden soll. Ohne dieses Flag sucht es meiner Meinung nach nach einem Skript mit dem mysqld_safe --data=/var
auszuführenden Namen, das ist nicht das Skript mysqld_safe
mit dem Argument --data=/var
, sondern ein einzelner Skriptname mit einem Leerzeichen, Bindestrichen und einem Gleichheitszeichen im Verzeichnisnamen. Stattdessen möchten Sie:
CMD ["sh", "-c", "mysqld_safe --data=/var"]