CMDでDocker(alpine)ファイルが見つからない

CMDでDocker(alpine)ファイルが見つからない

これが私の 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"]

私の問題は、イメージを使用してコンテナを実行すると、が見つからないことですmysqld_safe。ただし、次のようにコマンドを手動で実行すると、動作します。コマンド に問題があるかどうかを確認するためにdocker run mysql mysqld_safe --data=/var、dockerfile を次のように変更しようとしました が、ここでも同じ問題が発生し、で実行した場合を除いて見つかりません。CMD ["sh", "cat -"]mysqld_safecatdocker run mysql cat -

問題はbusyboxalpine から発生していますか、それとも PATH から発生していますか? 今のところはわかりませんので、助けが必要です。

答え1

シェルの次の引数を解析/実行するように指示する-cフラグがありません。これがないと、実行する名前のスクリプトを探していると思います。これは、引数を持つスクリプトではなく、ディレクトリ名にスペース、ダッシュ、および等号を含む単一のスクリプト名です。代わりに必要なのは、次のとおりです。shmysqld_safe --data=/varmysqld_safe--data=/var

CMD ["sh", "-c", "mysqld_safe --data=/var"]

関連情報