Zur*_*iar 16 docker docker-compose
是否可以指定 docker compose 用于变量替换的 env 文件?目前它默认为“.env”,但我有不同风格的撰写文件,应该有不同的环境。
Pet*_*mau 12
命令--env-file
行参数和env_file
docker-compose.yml 变量指定用于容器的 env 文件,而不是用于容器构建。要为构建本身设置不同的文件(例如alt.env ),请使用以下命令:
env $(cat alt.env) docker-compose up --build
Run Code Online (Sandbox Code Playgroud)
nwi*_*ler 10
您可以为此使用继承。如果您有一个用于设置环境的“基础”服务,则所有其他服务都可以继承该服务。
例子:
version: "2"
services:
base:
env_file:
- my_env.txt
web:
extends:
service: base
image: foo
database:
extends:
service: base
image: foo-db
Run Code Online (Sandbox Code Playgroud)
上面的示例在同一个文件中包含所有内容,但您也可以将其拆分为多个文件,其中base
服务将驻留在一个base.yaml
文件中。您只需要添加file: base.yaml
到该extends
部分。请参阅此处的文档。
我使用这种方法为所有容器设置代理变量。我有一个proxy.yaml
文件,它定义了一个proxy-app
从 shell 中获取代理环境变量的服务。我所有的真实服务都扩展了proxy-app
服务,从而继承了该服务的环境设置。
根据文档,现在可以加载环境文件(与每个服务文件相反),docker-compose 将在启动任何服务之前导出此 env 文件中定义的 env 变量,然后可以在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
Run Code Online (Sandbox Code Playgroud)
从docker-compose 1.25开始,还可以使用--env-file 标志指定自定义 .env 文件(不幸的是,目前无法使用--env-file 标志指定多个 .env 文件)
归档时间: |
|
查看次数: |
11545 次 |
最近记录: |