自动摘要
正在生成中……
env_file
env_file
是 Docker Compose 配置文件中的一个指令,该指令指定了一个环境变量文件,该文件中可以包含一个或多个环境变量。当 Docker Compose 启动服务时,这些环境变量会被自动地设置到对应的服务容器中。
这个指令通常用于引入包含很多环境变量的文件,而不是在 docker-compose.yml 中直接书写,这样可以保持 docker-compose.yml 文件的简洁性,同时也有利于敏感信息(如密码、密钥等)的管理和保密。
这个文件是一个简单的键值对列表,例如:
DB_HOST=database
DB_USER=username
DB_PASS=password
这样,你就可以在对应的容器内部通过环境变量(如在 Node.js 中通过 process.env.DB_HOST
)来访问这些值。
在 docker-compose.yml 文件中,你可以这样使用 env_file
指令:
version: '3'
services:
web:
image: my-web-app
env_file:
- web-variables.env
这样,web-variables.env 文件中定义的所有环境变量都会被添加到 web 服务的容器中。
值得注意的是,如果 env_file
中的环境变量和 docker-compose.yml 文件中的 environment
指令冲突,那么 environment
指令的值会优先生效。
如果 env_file
中的环境变量和 docker-compose.yml 文件中的 environment
指令冲突,那么 environment
指令的值会优先生效。
Docker Compose 在处理环境变量时,优先级的顺序是:
-
docker-compose.yml
文件中的 environment
指令。
-
docker-compose.yml
文件中的 env_file
指令。
- Dockerfile 中的 ENV 指令。
- 环境的 shell 变量。
所以当 environment
和 env_file
有冲突时,environment
的设置将会覆盖 env_file
的配置。