【问题标题】:define a locale environment variable in Dockerfile在 Dockerfile 中定义一个语言环境变量
【发布时间】:2021-06-12 23:40:29
【问题描述】:

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

【问题讨论】:

    标签: docker docker-compose dockerfile


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

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

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

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

      HTTP_PROXY 仅在构建过程中可用。

      【讨论】:

        猜你喜欢
        • 2019-12-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-12-07
        • 1970-01-01
        相关资源
        最近更新 更多