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_safe它找不到。catdocker run mysql cat -

问题出busybox在 Alpine 还是 PATH 上?我现在还不知道,需要你的帮助。

答案1

您缺少指示它解析/运行 shell 的下一个参数的-c标志。如果没有该标志,我相信它会寻找一个具有要运行的名称的脚本,这不是带有 arg 的脚本,而是目录名称中带有空格、破折号和等号的单个脚本名称。相反,您想要:shmysqld_safe --data=/varmysqld_safe--data=/var

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

相关内容