自动摘要
正在生成中……
很好的问题!
env_file
和 environment
都可以用来为服务设置环境变量,但它们的作用方式和优先级略有不同。
1. env_file
的作用
-
env_file
用于从外部文件批量导入环境变量。
-
文件格式通常为每行一个 KEY=VALUE
,比如:
# web1.env
APP_ENV=dev
PORT=8081
-
在 docker-compose.yml
里这样引用:
services:
web1:
image: myapp:latest
env_file:
- ./web1.env
2. environment
的作用
3. 两者的关系与优先级
-
可以同时使用,即一个服务既有
env_file
,又有 environment
。
-
优先级:
environment
> env_file
- 如果同一个变量在
env_file
和 environment
都有定义,以 environment
为准。
示例:
services:
web1:
image: myapp:latest
env_file:
- ./web1.env
environment:
- PORT=9999
假设 web1.env
内容为:
APP_ENV=dev
PORT=8081
最终容器内的环境变量为:
-
APP_ENV=dev
(来自 env_file
)
-
PORT=9999
(environment
覆盖了 env_file
的同名变量)
4. 总结
-
env_file
适合批量导入,environment
适合单独或覆盖设置。
- 同名变量时,
environment
的值会覆盖 env_file
的值。
如需更详细示例或有其他疑问,欢迎继续提问!