在Docker中构build期间如何设置环境variables
我试图在Docker容器中设置环境variables,但没有成功。 使用运行命令时设置它们,但我需要在构build期间设置它们。
Dockerfile
FROM ubuntu:latest ARG TEST_ENV=something
我用来构build的命令
docker build -t --build-arg TEST_ENV="test" myimage .
运行
docker run -dit myimage
我通过使用检查可用的环境variables
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
过程中使用的环境variables – 它们不存在于最终映像中,这就是为什么当您使用docker run
时看不到它们的原因。
您使用ARG
进行设置,这些设置只在构build图像时才相关,而不是由图像运行的容器所需。 您可以使用ENV
在evnvironmentvariables在构build和容器中使用。
有了这个Dockerfile:
FROM ubuntu ARG BUILD_TIME=abc ENV RUN_TIME=123 RUN touch /env.txt RUN printenv > /env.txt
你可以像使用docker build -t temp --build-arg BUILD_TIME=def .
build一样覆盖构build参数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=/