docker运行脚本导出envvariables

我已经search了一些像docker ENV和RUN export这样的问题,这解释了这些命令之间的差异,但是并没有帮助解决我的问题。

例如,我有一个名为myscript的脚本:

 #!/bin/bash export PLATFORM_HOME="$(pwd)" 

在Dockerfile中有以下几行:

 ... COPY myscript.sh / RUN ./myscript.sh 

我也尝试使用ENTRYPOINT而不是RUN或在调用脚本之前声明variables,所有这些都没有成功。

我想实现的是PLATFORM_HOME可以从其他Dockerfiles中引用,这些Dockerfiles使用那个作为基础。 怎么做 ?

没有办法将variables从脚本导出到子图像。 作为一般规则,环境variables往下传递,从来没有达到父母。

ENV将坚持在构build环境和子图像和容器。

Dockerfile

 FROM busybox ENV PLATFORM_HOME test RUN echo $PLATFORM_HOME 

Dockerfile.child

 FROM me/platform RUN echo $PLATFORM_HOME CMD ["sh", "-c", "echo $PLATFORM_HOME"] 

build立父母

 docker build -t me/platform . 

然后build立孩子:

 → docker build -f Dockerfile.child -t me/platform-test . Sending build context to Docker daemon 3.072kB Step 1/3 : FROM me/platform ---> 539b52190af4 Step 2/3 : RUN echo $PLATFORM_HOME ---> Using cache ---> 40e0bfa872ed Step 3/3 : CMD sh -c echo $PLATFORM_HOME ---> Using cache ---> 0c0e842f99fd Successfully built 0c0e842f99fd Successfully tagged me/platform-test:latest 

然后运行

 → docker run --rm me/platform-test test 

我想出口设置subprocess的环境variables。 所以,如果你运行或进入点真的没关系。 在阅读linux源码命令不能正常工作的时候,build立Dockerfile的时候 ,我觉得source命令也不能帮忙。

如果要在Dockerfile中设置环境variables,则需要使用ENV。

只需在您的Dockerfile中使用ENV PLATFORM_HOME=$(pwd)即可。 您将从Dockerfile创build的每个容器都可以访问variables。