Docker
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_safe
命令上,但這裡的問題相同,cat
除非我使用docker run mysql cat -
.問題是來自
busybox
alpine 還是來自 PATH ?我現在不知道,我需要你的幫助。
你錯過了告訴它解析/執行 shell 的下一個參數的
-c
標誌。sh
沒有它,我相信它正在尋找一個名稱mysqld_safe --data=/var
為要執行的腳本,這不是mysqld_safe
帶有 arg的腳本--data=/var
,而是目錄名稱中帶有空格、破折號和等號的單個腳本名稱。相反,你想要:CMD ["sh", "-c", "mysqld_safe --data=/var"]