在 Docker Compose 中设置或更改预定义的环境变量
Compose 已经附带了预定义的环境变量。它还继承了常见的 Docker CLI 环境变量,例如DOCKER_HOST
和DOCKER_CONTEXT
.有关详细信息,请参阅 Docker CLI 环境变量参考。
本页包含有关如何根据需要设置或更改以下预定义环境变量的信息:
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
要覆盖的方法
您可以设置或更改预定义的环境变量:
- 使用
.env
文件位于 Working Director 中 - 从命令行
- 从您的外壳
更改或设置任何环境变量时,请注意环境变量优先级。
配置
COMPOSE_PROJECT_NAME
设置项目名称。此值与服务名称一起附加到 启动时的容器名称。
例如,如果您的项目名称为myapp
它包括两项服务db
和web
,
然后 Compose 会启动名为myapp-db-1
和myapp-web-1
分别。
Compose 可以通过不同的方式设置项目名称。每种方法的优先级 (从最高到最低) 如下所示:
- 这
-p
命令行标志 COMPOSE_PROJECT_NAME
- 顶层
name:
变量(或最后一个name:
从 使用-f
) - 这
basename
的项目目录(或 包含使用-f
) - 这
basename
如果未指定配置文件,则为当前目录
项目名称必须仅包含小写字母、十进制数字、短划线和
下划线,并且必须以小写字母或十进制数字开头。如果basename
的项目目录或当前目录违反了此
constraint 中,则必须使用其他机制之一。
COMPOSE_FILE
指定 Compose 文件的路径。支持指定多个 Compose 文件。
- 默认行为:如果未提供,Compose 会查找名为
compose.yaml
,如果未找到,则 Compose 会递归搜索每个父目录,直到找到具有该名称的文件。 - 指定多个 Compose 文件时,默认情况下,路径分隔符为 on:
Mac 和 Linux:
:
(冒号)Windows:(分号) 例如:
;
COMPOSE_FILE=docker-compose.yml:docker-compose.prod.yml
COMPOSE_PATH_SEPARATOR
.
另请参阅命令行选项概述 和用-f
指定一个或多个 Compose 文件的名称和路径.
COMPOSE_PROFILES
指定要在docker compose up
运行。
将启动具有匹配配置文件的服务,以及尚未定义配置文件的任何服务。
例如,调用docker compose up
跟COMPOSE_PROFILES=frontend
选择具有frontend
配置文件以及未指定配置文件的任何服务。
如果指定多个配置文件,请使用逗号作为分隔符。
以下示例启用与frontend
和debug
配置文件和没有配置文件的服务。
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 上为
;
- 在 macOS 和 Linux 上,到
COMPOSE_IGNORE_ORPHANS
启用后,Compose 不会尝试检测项目的孤立容器。
- 支持的值:
true
或1
,以启用false
或0
,以禁用
- 默认为:
0
COMPOSE_REMOVE_ORPHANS
启用后,Compose 会在更新服务或堆栈时自动删除孤立的容器。孤立容器是由先前的配置创建但不再在当前compose.yaml
文件。
- 支持的值:
true
或1
启用自动删除孤立容器false
或0
,以禁用自动删除。Compose 会显示有关孤立容器的警告。
- 默认为:
0
COMPOSE_PARALLEL_LIMIT
指定并发引擎调用的最大并行度级别。
COMPOSE_ANSI
指定何时打印 ANSI 控制字符。
- 支持的值:
auto
中,Compose 会检测是否可以使用 TTY 模式。否则,请使用纯文本模式never
、使用纯文本模式always
或0
,使用 TTY 模式
- 默认为:
auto
COMPOSE_STATUS_STDOUT
启用后,Compose 会将其内部状态和进度消息写入stdout
而不是stderr
.
默认值为 false,以明确区分 Compose 消息和容器日志之间的输出流。
- 支持的值:
true
或1
,以启用false
或0
,以禁用
- 默认为:
0
COMPOSE_ENV_FILES
用于指定 Compose 在以下情况下应使用哪些环境文件--env-file
未使用。
使用多个环境文件时,请使用逗号作为分隔符。例如:
COMPOSE_ENV_FILES=.env.envfile1, .env.envfile2
如果COMPOSE_ENV_FILES
未设置,并且您不提供--env-file
在 CLI 中,Docker Compose 使用默认行为,即查找.env
文件。
COMPOSE_MENU
启用后,Compose 会显示一个导航菜单,您可以在其中选择在 Docker Desktop 中打开 Compose 堆栈,然后打开watch
模式或使用 Docker Debug。
- 支持的值:
true
或1
,以启用false
或0
,以禁用
- 默认为:
1
如果你是通过 Docker Desktop 获取的 Docker Compose,否则默认为0
COMPOSE_EXPERIMENTAL
这是一个选择退出变量。关闭后,它将停用实验性功能,例如导航菜单或同步文件共享。
- 支持的值:
true
或1
,以启用false
或0
,以禁用
- 默认为:
1
在 Compose V2 中不受支持
以下环境变量在 Compose V2 中不起作用。 有关更多信息,请参阅迁移到 Compose V2。
COMPOSE_API_VERSION
默认情况下,API 版本是与服务器协商的。用DOCKER_API_VERSION
.
请参阅 Docker CLI 环境变量参考页面。COMPOSE_HTTP_TIMEOUT
COMPOSE_TLS_VERSION
COMPOSE_FORCE_WINDOWS_HOST
COMPOSE_INTERACTIVE_NO_CLI
COMPOSE_DOCKER_CLI_BUILD
用DOCKER_BUILDKIT
在 BuildKit 和经典构建器之间进行选择。如果DOCKER_BUILDKIT=0
然后docker compose build
使用 Classic Builder 构建镜像。