如何将环境变量传递给RUN命令

时间:2016-02-14 18:40:20

标签: docker docker-compose dockerfile

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

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

这样Dockerfile

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

如何使用包含文字txt的{​​{1}}文件的图片结束?

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

[UPDATE]

如果我将环境变量放在world 中,它可以正常运行,这让我认为这是一个Dockerfile问题!

docker-compose

1 个答案:

答案 0 :(得分:1)

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

要实现这一点,您必须使用args字段的build选项(仅支持docker-compose的版本2文件格式)。它将允许您添加构建参数。

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

在下面找到如何使用它:

<强>搬运工-compose.yml

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

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

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