我正在尝试在构建期间在Docker容器中设置环境变量,但没有成功。使用run命令设置它们可以工作,但是我需要在构建期间进行设置。
Docker文件
FROM ubuntu:latest ARG TEST_ENV=something
我正在使用的命令
docker build -t --build-arg TEST_ENV="test" myimage .
跑步
docker run -dit myimage
我正在通过检查可用的环境变量
docker exec containerid printenv
结果是
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin HOSTNAME=e49c1abfd58b TERM=xterm no_proxy=*.local, 169.254/16 HOME=/root
TEST_ENV不存在
ARG用于设置在docker build过程中使用的环境变量-它们不会出现在最终图像中,这就是为什么在使用时看不到它们的原因docker run。
ARG
docker build
docker run
您使用ARG的设置仅在构建映像时相关,而从映像运行的容器不需要使用这些设置。您可以使用ENVevnvironment变量在构建过程中和在容器中使用。
ENV
有了这个Dockerfile:
FROM ubuntu ARG BUILD_TIME=abc ENV RUN_TIME=123 RUN touch /env.txt RUN printenv > /env.txt
您可以像完成操作一样覆盖build arg docker build -t temp --build-arg BUILD_TIME=def .。然后,您将获得期望的结果:
docker build -t temp --build-arg BUILD_TIME=def .
> docker run temp cat /env.txt HOSTNAME=b18b9cafe0e0 RUN_TIME=123 HOME=/root PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin BUILD_TIME=def PWD=/