【问题标题】:How to pass an environment variable into a RUN command如何将环境变量传递给 RUN 命令
【发布时间】:2016-02-14 18:40:19
【问题描述】:

我有一个像这样的docker-compose.yml 文件:

version : '2'
services :
    s1 :
        build : .
        environment :
            HELLO : world

还有一个像这样的Dockerfile

FROM ubuntu
RUN /bin/bash -c 'echo "$HELLO" > /txt'

我怎样才能得到一个带有txt 文件的图像,其中包含文本world

现在当我测试给定的例子时,文件是空的!

[更新]

如果我把环境变量放在Dockerfile 它工作得很好,这让我觉得这是一个docker-compose 的问题!

FROM ubuntu
ENV HELLO=world
RUN /bin/bash -c 'echo "$HELLO" > /txt'

【问题讨论】:

    标签: docker docker-compose dockerfile


    【解决方案1】:

    docker-compose.yml 中定义的环境在构建时将无法访问。

    为此,您必须使用build 字段的args 选项(仅在docker-compose 的版本2 文件格式中支持)。它可以让你添加构建参数。

    https://docs.docker.com/compose/compose-file/#args

    在下面找到如何使用它:

    docker-compose.yml

    services :
        s1 :
            build :
                context: .
                args:
                    HELLO: world
    

    另外,请注意,您必须在 Dockerfile 中定义一个具有相同键名的 ARG 标记。

    FROM ubuntu
    ARG HELLO
    RUN echo "$HELLO" > /txt
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-02-09
      • 2022-08-16
      • 2017-01-22
      • 1970-01-01
      • 2020-01-10
      • 1970-01-01
      • 1970-01-01
      • 2021-04-17
      相关资源
      最近更新 更多