在 Dockerfile 中定义区域设置环境变量

zap*_*pee 3 docker dockerfile docker-compose

有什么方法可以创建Dockerfile仅在构建过程中可用的局部变量吗?我可以看到,如果我使用ENV关键字定义一个变量,那么它将稍后在图像中作为导出的环境变量使用。但我想要一个仅具有构建范围的“技术”变量。

我想避免在我的 Dolerfile 中重复,因此我希望有一个仅可从 Dockerfile 获取的变量:

ENV MY_JAR=myJar.jar
COPY bin/$MY_JAR $ORACLE_HOME/user_projects/domains/$DOMAIN_NAME/lib/
COPY bin/$MY_JAR $ORACLE_HOME/wlserver/server/lib/mbeantypes/
Run Code Online (Sandbox Code Playgroud)

MY_JAR变量出现在容器中。我在那里不需要它。它只会让用户感到困惑。我可以以某种方式做到这一点吗?

小智 5

使用ARG而不是ENV

ARG MY_JAR=myJar.jar  # ARG is only available during the build of a Docker image
COPY bin/$MY_JAR $ORACLE_HOME/user_projects/domains/$DOMAIN_NAME/lib/
COPY bin/$MY_JAR $ORACLE_HOME/wlserver/server/lib/mbeantypes/
Run Code Online (Sandbox Code Playgroud)

另请参阅ARG 或 ENV,在这种情况下使用哪一个?