目前我已经设置了我的服务,如下所示。
version: '3'
services:
gateway:
container_name: gateway
image: node:lts-alpine
working_dir: /
volumes:
- ./package.json:/package.json
- ./tsconfig.json:/tsconfig.json
- ./services/gateway:/services/gateway
- ./packages:/packages
- ./node_modules:/node_modules
env_file: .env
command: yarn run ts-node-dev services/gateway --colors
ports:
- 3000:3000
Run Code Online (Sandbox Code Playgroud)
所以我指定了一个env_file
。但现在我想传递多个 .env 文件。
不幸的是,以下情况是不可能的:
env_files:
- .env.secrets
- .env.development
Run Code Online (Sandbox Code Playgroud)
有没有办法将多个 .env 文件传递给 docker-compsoe 中的一项服务?
con*_*com 33
您可以在选项上指定多个环境文件env_file
(不带s
)。
例如:
version: '3'
services:
hello:
image: alpine
entrypoint: ["sh"]
command: ["-c", "env"]
env_file:
- a.env
- b.env
Run Code Online (Sandbox Code Playgroud)
小智 11
请注意,与 @conradkleineespel 的答案互补的是,如果在 下列出的多个 .env 文件中定义了环境变量env_file
,则列表中最后一个环境文件中找到的值将覆盖所有先前的值(在 docker-compose 文件中使用 .env 进行测试)version: '3.7'
。
从版本 2.17.0 开始(现在是rc.1,但很快就会是 2.17.0 ),您可以指定多个文件作为 cli 参数:sudo docker compose --env-file .env --env-file dev.env up
优点:
env_file
在多个服务中重复部分。缺点:
sudo docker compose logs
您将需要指定 --env-file .env --env-file dev.env
. 否则你会看到类似的错误WARN[0000] The "VAR_NAME" variable is not set. Defaulting to a blank string
。 归档时间: |
|
查看次数: |
21660 次 |
最近记录: |