据此: https://hub.docker.com/_/mysql/
我可以使用以下命令设置MySQL根密码:
docker run --name some-mysql -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mysql:tag
我假设MYSQL_ROOT_PASSWORD
是使用ARG
设置的环境变量(例如Get environment variable value in Dockerfile),但是看着DockerFile(https://github.com/docker-library/mysql/blob/696fc899126ae00771b5d87bdadae836e704ae7d/8.0/Dockerfile)我看不到ARG
。
那么,该root密码是如何设置的?
答案 0 :(得分:2)
它实际上在入口点脚本中使用-
参考-https://github.com/docker-library/mysql/blob/696fc899126ae00771b5d87bdadae836e704ae7d/8.0/docker-entrypoint.sh
Dockerfile中的入口点配置-
COPY docker-entrypoint.sh /usr/local/bin/
RUN ln -s usr/local/bin/docker-entrypoint.sh /entrypoint.sh # backwards compat
ENTRYPOINT ["docker-entrypoint.sh"]
答案 1 :(得分:0)
让我澄清一下Dockerfile中的参数。
ARG-仅在docker映像构建期间可用。 假设您要在docker image中存储源代码的哈希提交。
ARG Commit
比您构建一个docker映像
docker build -t someimage —build-arg Commit=<somehash>
ENV-可用于docker容器的值,可用作RUN命令的一部分。
在实际运行时,可以通过将其添加到运行字符串来更改ENV变量或添加新的env变量:
docker run -e SOME_VAR=somevar someimage.
希望这会对您有所帮助。