无法在Dockerfile中设置shell变量

时间:2015-07-06 18:53:00

标签: docker

我正在尝试编写一个设置我的GOPATH变量的Dockerfile 当我以后使用变量时它是空的,例如:

Step 7 : RUN export GOPATH=/root/go
---> Running in 5691396dd55b
---> 17d76f7de05f
Removing intermediate container 5691396dd55b
Step 8 : RUN echo $GOPATH
---> Running in b2cd6ef885d0

---> 54b5a3d5c697

我尝试做一个docker build -no-cache。但我得到了相同的结果; 任何想法?

1 个答案:

答案 0 :(得分:3)

您应该使用ENV在Dockerfile中设置环境变量。

请参阅https://docs.docker.com/reference/builder/#env

文档补充说明:

  

注意:环境持久性可能会导致意外影响。例如,设置ENV DEBIAN_FRONTEND noninteractive可能会使基于Debian的图像上的apt-get用户感到困惑。要为单个命令设置值,请使用RUN <key>=<value> <command>

“”部分很重要,因为没有它,环境变量只为发生RUN的一层设置,因此它对后续层没有影响。 ENV将持续存在子图层。