在 Dockerfile 中定义语言环境变量

时间:2021-03-15 17:11:03

标签: docker docker-compose 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 变量出现在容器中。我在那里不需要它。它只会让用户感到困惑。我能以某种方式做到这一点吗?

2 个答案:

答案 0 :(得分:0)

您可以使用 --build-arg 参数传递仅在 docker 构建过程中存在的环境变量。

所以你的 docker build 命令看起来像这样

docker build --build-arg HTTP_PROXY=http://10.20.30.2:1234 -t sample:v1 .

其中 HTTP_PROXY 仅在构建过程中可用。

答案 1 :(得分:0)

使用 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 or ENV, which one to use in this case?

相关问题