首页 > 解决方案 > 在 Dockerfile 中定义一个语言环境变量

问题描述

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

我想避免在我的 Doclerfile 中重复,所以我想有一个只能从 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/

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

标签: dockerdocker-composedockerfile

解决方案


使用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/

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


推荐阅读