Skip to main content

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 文件的路径。