【问题标题】:How to pass multiple environment variables in Dockerfile?如何在 Dockerfile 中传递多个环境变量?
【发布时间】:2019-09-20 07:21:50
【问题描述】:

我有一个 docker-compose 文件,它允许我将环境变量作为文件(.env 文件)传递。由于我有多个 ENV 变量,Dockerfile 中是否有任何选项,例如 docker-compose 中的 env_file,用于在 docker build 期间传递多个环境变量?

这是 docker-compose.yml

services:
  web:
    image: "node"
    links:
        - "db"
    env_file: "env.app"

【问题讨论】:

  • 您可以在 Dockerfile 中复制您的 env.app,然后使用 RUN 命令获取它。但是没有类似内置命令的东西

标签: docker docker-compose environment-variables dockerfile


【解决方案1】:

AFAIK,没有这种方法可以在使用 Dockerfile 的构建步骤中使用文件注入环境变量。然而,在大多数情况下,人们最终会在 docker run 或 docker-compose up 期间使用入口点脚本并注入变量。

如果有必要,您可能需要编写一个 shell 包装器,该包装器将通过将键值对文本文件作为输入来动态更改 Dockerfile 中的值,或者使其如下所示,但 ENV 文件名需要被包含在 Dockerfile 中。

COPY my-env-vars /    
RUN export $(cat my-env-vars | xargs)

这是一个未解决的问题 - https://github.com/moby/moby/issues/28617

PS - 使用这种方法时您需要格外小心,因为这些秘密已融入图像本身。

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-04-27
  • 2023-02-12
  • 2021-09-15
  • 2018-05-11
  • 2021-05-19
  • 2018-01-08
相关资源
最近更新 更多