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