指定env文件docker compose uses

时间:2016-11-10 10:25:42

标签: docker docker-compose

是否可以指定docker compose用于变量替换的env文件?目前它默认为" .env"但我有不同风格的撰写文件应该有不同的环境。

3 个答案:

答案 0 :(得分:3)

您可以使用继承。如果你有一个" base"在您设置环境的服务中,您的所有其他服务都可以继承。

示例:

version: "2"

services:
  base:
    env_file:
      - my_env.txt

  web:
    extends:
      service: base
    image: foo

  database:
    extends:
      service: base
    image: foo-db

上面的示例包含同一文件中的所有内容,但您也可以将其拆分为多个文件,其中base服务将驻留在base.yaml文件中。您只需将file: base.yaml添加到extends部分即可。请参阅the documentation here

我使用这种方法为所有容器设置代理变量。我有一个proxy.yaml文件,它定义了一个proxy-app服务,它从shell中获取代理环境变量。我的所有实际服务都扩展了proxy-app服务,从而继承了该服务的环境设置。

答案 1 :(得分:1)

根据文档:https://docs.docker.com/compose/env-file/,现在可以加载docker-compose在启动任何服务之前将评估的“全局”环境文件(与每个服务文件相反),其中影响所有服务的价值

答案 2 :(得分:0)

--env-file 命令行参数和 env_file docker-compose.yml 变量指定用于容器的 env 文件,而不是用于容器构建。要为构建本身设置不同的文件(例如 alt.env),请使用:

env $(cat alt.env) docker-compose up --build