有没有办法在 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
变量出现在容器中。我在那里不需要它。它只会让用户感到困惑。我能以某种方式做到这一点吗?
答案 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/