首页 > 解决方案 > 如何在 Dockerfile 中传递多个环境变量?

问题描述

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

这是 docker-compose.yml

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

标签: dockerdocker-composeenvironment-variablesdockerfile

解决方案


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

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

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

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

PS - 使用这种方法时您需要格外小心,因为秘密已被烘焙到图像本身中。


推荐阅读