在 Docker Compose 中设置或更改预定义的环境变量

Compose 已经附带了预定义的环境变量。它还继承了常见的 Docker CLI 环境变量,例如 和 。有关详细信息,请参阅 Docker CLI 环境变量参考DOCKER_HOSTDOCKER_CONTEXT

本页包含有关如何根据需要设置或更改以下预定义环境变量的信息:

  • COMPOSE_PROJECT_NAME
  • COMPOSE_FILE
  • COMPOSE_PROFILES
  • COMPOSE_CONVERT_WINDOWS_PATHS
  • COMPOSE_PATH_SEPARATOR
  • COMPOSE_IGNORE_ORPHANS
  • COMPOSE_REMOVE_ORPHANS
  • COMPOSE_PARALLEL_LIMIT
  • COMPOSE_ANSI
  • COMPOSE_STATUS_STDOUT
  • COMPOSE_ENV_FILES
  • COMPOSE_MENU
  • COMPOSE_EXPERIMENTAL

要覆盖的方法

您可以设置或更改预定义的环境变量:

更改或设置任何环境变量时,请注意环境变量优先级

配置

COMPOSE_PROJECT_NAME

设置项目名称。此值与服务名称一起附加到 启动时的容器名称。

例如,如果您的项目名称为 ,并且它包含两个服务 和 , 然后 Compose 会启动分别名为 和 的容器。myappdbwebmyapp-db-1myapp-web-1

Compose 可以通过不同的方式设置项目名称。每种方法的优先级 (从最高到最低) 如下所示:

  1. 命令行标志-p
  2. COMPOSE_PROJECT_NAME
  3. 配置文件中的顶级变量(或最后一个 使用name:name:-f)
  4. 包含配置文件的项目目录(或 包含使用basename-f)
  5. 当前目录(如果未指定配置文件)basename

项目名称必须仅包含小写字母、十进制数字、短划线和 下划线,并且必须以小写字母或十进制数字开头。如果项目目录或当前目录的 违反了此 constraint 中,则必须使用其他机制之一。basename

另请参阅命令行选项概述使用 -p 指定项目名称

COMPOSE_FILE

指定 Compose 文件的路径。支持指定多个 Compose 文件。

  • 默认行为:如果未提供,则 Compose 会查找当前目录中命名的文件,如果未找到,则 Compose 会递归搜索每个父目录,直到找到具有该名称的文件。compose.yaml
  • 指定多个 Compose 文件时,默认情况下,路径分隔符为 on:
    • Mac 和 Linux:(冒号):

    • Windows:(分号) 例如:;

      COMPOSE_FILE=docker-compose.yml:docker-compose.prod.yml
      
    也可以使用 COMPOSE_PATH_SEPARATOR 自定义路径分隔符。

另请参阅命令行选项概述使用 -f 指定一个或多个 Compose 文件的名称和路径

COMPOSE_PROFILES

指定 运行时要启用的一个或多个配置文件。docker compose up

将启动具有匹配配置文件的服务,以及尚未定义配置文件的任何服务。

例如,调用 with 会选择具有配置文件的服务以及未指定配置文件的任何服务。docker compose upCOMPOSE_PROFILES=frontendfrontend

如果指定多个配置文件,请使用逗号作为分隔符。

以下示例启用与 和 profiles 和 services 不匹配的所有服务。frontenddebug

COMPOSE_PROFILES=frontend,debug

另请参阅在 Compose 中使用配置文件--profile 命令行选项

COMPOSE_CONVERT_WINDOWS_PATHS

启用后,Compose 会在卷定义中执行从 Windows 样式到 Unix 样式的路径转换。

  • 支持的值:
    • true或 ,以启用1
    • false或 , 以禁用0
  • 默认为:0

COMPOSE_PATH_SEPARATOR

为 中列出的项目指定不同的路径分隔符。COMPOSE_FILE

  • 默认为:
    • 在 macOS 和 Linux 上,到:
    • 在 Windows 上为;

COMPOSE_IGNORE_ORPHANS

启用后,Compose 不会尝试检测项目的孤立容器。

  • 支持的值:
    • true或 ,以启用1
    • false或 , 以禁用0
  • 默认为:0

COMPOSE_REMOVE_ORPHANS

启用后,Compose 会在更新服务或堆栈时自动删除孤立的容器。孤立容器是由以前的配置创建但不再在当前文件中定义的容器。compose.yaml

  • 支持的值:
    • true或 ,以启用自动删除孤立容器1
    • false或 ,以禁用自动删除。Compose 会显示有关孤立容器的警告。0
  • 默认为:0

COMPOSE_PARALLEL_LIMIT

指定并发引擎调用的最大并行度级别。

COMPOSE_ANSI

指定何时打印 ANSI 控制字符。

  • 支持的值:
    • auto中,Compose 会检测是否可以使用 TTY 模式。否则,请使用纯文本模式
    • never、使用纯文本模式
    • always或 ,使用 TTY 模式0
  • 默认为:auto

COMPOSE_STATUS_STDOUT

启用后,Compose 会将其内部状态和进度消息写入 ,而不是 。 默认值为 false,以明确区分 Compose 消息和容器日志之间的输出流。stdoutstderr

  • 支持的值:
    • true或 ,以启用1
    • false或 , 以禁用0
  • 默认为:0

COMPOSE_ENV_FILES

允许您指定 Compose 在未使用时应使用哪些环境文件。--env-file

使用多个环境文件时,请使用逗号作为分隔符。例如:

COMPOSE_ENV_FILES=.env.envfile1, .env.envfile2

如果未设置,并且您未在 CLI 中提供,则 Docker Compose 将使用默认行为,即在项目目录中查找文件。COMPOSE_ENV_FILES--env-file.env

COMPOSE_MENU

在 Docker Compose 版本 2.26.0 中引入

启用后,Compose 会显示一个导航菜单,您可以在其中选择在 Docker Desktop 中打开 Compose 堆栈、开启监视模式或使用 Docker Debug

  • 支持的值:
    • true或 ,以启用1
    • false或 , 以禁用0
  • 默认为:如果您通过 Docker Desktop 获取了 Docker Compose,否则默认为10

COMPOSE_EXPERIMENTAL

在 Docker Compose 版本 2.26.0 中引入

这是一个选择退出变量。关闭后,它将停用实验性功能,例如导航菜单或同步文件共享

  • 支持的值:
    • true或 ,以启用1
    • false或 , 以禁用0
  • 默认为:1

在 Compose V2 中不受支持

以下环境变量在 Compose V2 中不起作用。 有关更多信息,请参阅迁移到 Compose V2

  • COMPOSE_API_VERSION默认情况下,API 版本是与服务器协商的。用。
    请参阅 Docker CLI 环境变量参考页面。
    DOCKER_API_VERSION
  • COMPOSE_HTTP_TIMEOUT
  • COMPOSE_TLS_VERSION
  • COMPOSE_FORCE_WINDOWS_HOST
  • COMPOSE_INTERACTIVE_NO_CLI
  • COMPOSE_DOCKER_CLI_BUILD用于在 BuildKit 和经典构建器之间进行选择。If then 使用经典构建器构建镜像。DOCKER_BUILDKITDOCKER_BUILDKIT=0docker compose build