Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/docker/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/jsf/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Can';t在Dockerfile中设置shell变量_Docker - Fatal编程技术网

Can';t在Dockerfile中设置shell变量

Can';t在Dockerfile中设置shell变量,docker,Docker,我正试图写一个Dockerfile来设置我的GOPATH变量 当我以后使用该变量时,它是空的,例如: Step 7 : RUN export GOPATH=/root/go ---> Running in 5691396dd55b ---> 17d76f7de05f Removing intermediate container 5691396dd55b Step 8 : RUN echo $GOPATH ---> Running in b2cd6ef885d0 --->

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

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构建-没有缓存。但我得到了同样的结果;
有什么想法吗?

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

请看

文件中的附加说明:

注意:环境持久性可能会导致意外的影响。例如,设置
ENV DEBIAN_fronternate noninteractive
可能会在基于DEBIAN的映像上混淆
apt get
用户。要设置单个命令的值,请使用
RUN=


“”部分很重要,因为如果没有它,环境变量只为运行所在的一个层设置,因此它对后续层没有影响
ENV
将对子层保持不变。

每个RUN命令都在一个新的shell中执行,因此内部进程状态不能在它们之间执行。这就像运行
sh-c'export-GOPATH=/root/go';sh-c'echo$GOPATH'
也不会在后者中反映前者的变化。