【问题标题】:How to specify build-time ENVs in docker-compose.yml如何在 docker-compose.yml 中指定构建时 ENV
【发布时间】:2020-07-28 13:04:11
【问题描述】:

ARGs 和 ENVs 在构建时都可用于 Dockerfile,但显然 Docker Compose 只允许在 service.build.args 中指定 ARG。 service.environment 中指定的 ENV 在构建时显然不可见(考虑到此路径,这也很有意义)。

因此,如果我的构建依赖于 ENV(以及 ARG)并且如果我使用 docker-compose build 构建,我如何在我的 docker-compose.yaml 中提供构建时 ENV?

【问题讨论】:

    标签: docker docker-compose


    【解决方案1】:

    无法将环境变量从外部传递到 Dockerfile,无论是通过 docker build 还是 Compose build: 块。您只能指定参数。

    如果确实需要在构建时指定环境变量,可以将其作为参数传递,然后在 Dockerfile 中设置环境变量

    ARG FOO
    ENV FOO ${FOO}
    

    如果您更改其中任何一项,则必须重建映像。这使得该技术不适用于特定于部署的设置,例如用户 ID、主机名等。容器端端口号和文件系统路径也可以作为映像的固定属性。 p>

    【讨论】:

    • 我已经尝试过了(也建议here),但它似乎不起作用。我观察到ARG FOO 显然会按预期影响构建过程(具有非空值),但ENV FOO ${FOO} 在docker inspect 仅显示环境变量@987654328 的空值的意义上似乎不起作用@。我还会在这里做错吗?
    • 所以我发现了这个问题。这是我的一个错误。 Dockerfile 包含两个阶段 ARG FOO 在第一阶段上升,ENV FOO ${FOO} 在第二阶段下降。必须在第二阶段添加另一个 ARG FOO。
    猜你喜欢
    • 1970-01-01
    • 2022-10-19
    • 1970-01-01
    • 2020-06-02
    • 2022-11-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-21
    相关资源
    最近更新 更多