我正在认真寻找将值传递给DOCKERFILE
中的ENV
变量的解决方案。
EX:
FROM alphine
COPY domainname.txt .
ENV NAME=$(cat /domainname.txt)
如果你坚持在docker构建时获得NAME
值,你可以使用下一个:
Dockerfile:
FROM alpine
ARG NAME
ENV NAME=${NAME}
domainname.txt:
hello
执行:
$ docker build --build-arg NAME=$(cat ./domainname.txt) -t abc:1 . --no-cache
Sending build context to Docker daemon 3.072kB
Step 1/3 : FROM alpine
---> d4ff818577bc
Step 2/3 : ARG NAME
---> Running in f1c58e816499
Removing intermediate container f1c58e816499
---> dc4d5894440b
Step 3/3 : ENV NAME=${NAME}
---> Running in 9b8f98a3857c
Removing intermediate container 9b8f98a3857c
---> 2b0c68ddc994
Successfully built 2b0c68ddc994
Successfully tagged abc:1
$ docker run --rm -it abc:1 env
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
HOSTNAME=2155d7368c3e
TERM=xterm
NAME=hello
HOME=/root
您可以看到上面的NAME
被分配为hello
。
简单解释:
NAME=$(cat ./domainname.txt)
将hello
分配给NAME
--build-arg
将hello
传递给docker构建的ARG NAME
ENV NAME=${NAME}
从ARG NAME
得到hello