DockerFile和环境变量

时间:2018-12-03 11:28:31

标签: docker dockerfile

据此: 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密码是如何设置的?

2 个答案:

答案 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.

希望这会对您有所帮助。