docker-compose 环境变量
从 .env
文件加载变量:
docker-compose
默认会从同级目录下的 .env
文件中加载环境变量。
步骤:
-
创建一个
.env
文件,定义变量,如:MYSQL_ROOT_PASSWORD=root_password
MYSQL_DATABASE=my_database
MYSQL_USER=my_user
MYSQL_PASSWORD=my_password -
在
docker-compose.yml
中引用这些变量:version: "3.8"
services:
db:
image: mysql:8.0
environment:
- MYSQL_ROOT_PASSWORD=${MYSQL_ROOT_PASSWORD}
- MYSQL_DATABASE=${MYSQL_DATABASE}
- MYSQL_USER=${MYSQL_USER}
- MYSQL_PASSWORD=${MYSQL_PASSWORD}
在这个例子中,${VARIABLE_NAME}
用于引用 .env
文件中的变量。
直接在系统环境变量中定义:
你也可以在运行 docker-compose
命令前,在系统环境中定义这些变量,docker-compose
会自动从系统环境中读取变量值。
步骤:
-
在命令行中定义环境变量:
export MYSQL_ROOT_PASSWORD=root_password
export MYSQL_DATABASE=my_database
export MYSQL_USER=my_user
export MYSQL_PASSWORD=my_password -
然后运行
docker-compose up
。 -
docker-compose.yml
文件与前面的例子相同。
注意:
- 系统环境变量优先级高于.env 文件(如果同时在
.env
文件和系统环境中定义了相同的变量,系统环境变量会覆盖.env
文件中的变量。) - 还可以通过
docker-compose -f docker-compose.yml --env-file .env up
命令显式指定.env
文件的路径。