指定docker compose使用的环境文件
是否可以指定docker compose用于变量替换的env文件?目前它默认为“.env”,但我有不同风格的compose文件,它们应该有不同的env。您可以使用继承来实现这一点。如果您有一个用于设置环境的“基本”服务,那么所有其他服务都可以从该服务继承 例如:指定docker compose使用的环境文件,docker,docker-compose,Docker,Docker Compose,是否可以指定docker compose用于变量替换的env文件?目前它默认为“.env”,但我有不同风格的compose文件,它们应该有不同的env。您可以使用继承来实现这一点。如果您有一个用于设置环境的“基本”服务,那么所有其他服务都可以从该服务继承 例如: version: "2" services: base: env_file: - my_env.txt web: extends: service: base image: f
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
文件中。只需将文件:base.yaml
添加到扩展部分。请看
我使用这种方法为所有容器设置代理变量。我有一个proxy.yaml
文件,它定义了一个proxy-app
服务,该服务从shell中提取代理环境变量。我的所有真实服务都扩展了代理应用程序服务,从而从该服务继承了环境设置。根据,现在可以加载环境文件(与每个服务文件相反),docker compose将在启动任何服务之前导出此环境文件中定义的环境变量,然后可以在docker-compose.yml配置文件本身中使用它们:
version: "3.7"
services:
node:
environment:
APP_ENV: "${APP_ENV}"
NODE_ENV: "${NODE_ENV}"
ports:
- "${HOST_EXPOSED_NODEJS_DEBUG_PORT}:9229"
volumes:
- type: bind
source: ./project
target: /var/www/project
read_only: false
由于还可以使用命令行参数--env file
和env_file
docker-compose.yml变量指定自定义.env文件(遗憾的是,目前无法指定)指定用于容器而非容器构建的env文件。要为构建本身设置不同的文件(例如alt.env),请使用以下命令:
env $(cat alt.env) docker-compose up --build
我找到了这个,但似乎每个容器都需要env_文件。。是否可以为整个docker compose文件全局设置它,从而覆盖默认的.env?注意:在docker compose v3和Up中不起作用这在docker compose v3+中不起作用,因为每个服务必须具有定义的映像或生成上下文。记录和讨论