Docker (Alpine)-Datei bei CMD nicht gefunden

Docker (Alpine)-Datei bei CMD nicht gefunden

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=/varfunktioniert es! Ich versuche, die Docker-Datei mit zu ändern: CMD ["sh", "cat -"] um zu sehen, ob das Problem beim mysqld_safeBefehl 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 busyboxAlpine oder von PATH? Ich habe im Moment keine Ahnung und brauche Ihre Hilfe.

Antwort1

Ihnen fehlt das -cFlag 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=/varauszuführenden Namen, das ist nicht das Skript mysqld_safemit 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"]

verwandte Informationen