在 Docker Compose 中引入环境变量有两种方法:
- 使用 .env 文件
在 Compose 项目根目录下创建一个名为 .env
的文件,定义需要使用的环境变量,例如:
DB_HOST=localhost
DB_PORT=3306
DB_USER=admin
DB_PASSWORD=123456
然后,在 docker-compose.yml
文件中使用 ${ENV_VAR}
语法来引用这些环境变量,例如:
services:
db:
image: mysql:${MYSQL_VERSION}
environment:
MYSQL_ROOT_PASSWORD: ${DB_PASSWORD}
MYSQL_DATABASE: ${DB_NAME}
MYSQL_USER: ${DB_USER}
MYSQL_PASSWORD: ${DB_PASSWORD}
ports:
- "${DB_PORT}:3306"
- 使用 .env 文件和 env_file 参数
除了使用 .env
文件外,可以将环境变量定义在另一个文件中,然后使用 env_file
参数引入,例如:
.env
DB_HOST=localhost
DB_PORT=3306
DB_USER=admin
DB_PASSWORD=123456
.env.db
MYSQL_VERSION=5.7
DB_NAME=mydb
docker-compose.yml
services:
db:
image: mysql:${MYSQL_VERSION}
env_file:
- .env
- .env.db
environment:
MYSQL_ROOT_PASSWORD: ${DB_PASSWORD}
MYSQL_DATABASE: ${DB_NAME}
MYSQL_USER: ${DB_USER}
MYSQL_PASSWORD: ${DB_PASSWORD}
ports:
- "${DB_PORT}:3306"
这样做的好处是可以将不同类型的环境变量分开管理,方便维护。