DOCKER将shell值分配给DOCKERFILE中的ENV



我正在认真寻找将值传递给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

简单解释:

  1. NAME=$(cat ./domainname.txt)hello分配给NAME
  2. --build-arghello传递给docker构建的ARG NAME
  3. ENV NAME=${NAME}ARG NAME得到hello

相关内容

  • 没有找到相关文章

最新更新