docker compose

描述Docker Compose
用法docker compose

描述

使用 Docker 定义和运行多容器应用程序

选项

选项默认值描述
--all-resources包含所有资源,即使是服务未使用的资源
--ansiauto控制何时打印 ANSI 控制字符("从不"|"总是"|"自动")
--compatibility以向后兼容模式运行 compose
--dry-run以空运行模式执行命令
--env-file指定备用环境文件
-f, --fileCompose 配置文件
--parallel-1控制最大并行度,-1 表示无限制
--profile指定要启用的配置文件
--progress设置进度输出类型(auto, tty, plain, json, quiet)
--project-directory指定备用工作目录
(默认:第一个指定的 Compose 文件的路径)
-p, --project-name项目名称

示例

使用 -f 指定一个或多个 Compose 文件的名称和路径

使用 -f 标志指定 Compose 配置文件的位置。

指定多个 Compose 文件

您可以提供多个 -f 配置文件。当您提供多个文件时,Compose 会将它们合并为一个配置。Compose 按照您提供文件的顺序构建配置。后续文件会覆盖并添加到其前身。

例如,考虑此命令行

$ docker compose -f compose.yaml -f compose.admin.yaml run backup_db

compose.yaml 文件可能指定一个 webapp 服务。

services:
  webapp:
    image: examples/web
    ports:
      - "8000:8000"
    volumes:
      - "/data"

如果 compose.admin.yaml 也指定了同一个服务,任何匹配的字段都会覆盖前一个文件。新值会添加到 webapp 服务配置中。

services:
  webapp:
    build: .
    environment:
      - DEBUG=1

当您使用多个 Compose 文件时,文件中所有路径都相对于使用 -f 指定的第一个配置文件。您可以使用 --project-directory 选项覆盖此基本路径。

使用 -f 并将文件名设为 -(破折号),从 stdin 读取配置。当使用 stdin 时,配置中的所有路径都相对于当前工作目录。

-f 标志是可选的。如果您在命令行中未提供此标志,Compose 会遍历工作目录及其父目录,查找 compose.yamldocker-compose.yaml 文件。

指定单个 Compose 文件的路径

您可以使用 -f 标志指定不在当前目录中的 Compose 文件的路径,既可以通过命令行,也可以通过在 shell 或环境文件中设置 COMPOSE_FILE 环境变量。

例如,要使用命令行中的 -f 选项,假设您正在运行 Compose Rails 示例,并且在名为 sandbox/rails 的目录中有一个 compose.yaml 文件。您可以使用类似 docker compose pull 的命令,通过使用 -f 标志从任何位置获取 db 服务的 postgres 镜像,如下所示:

$ docker compose -f ~/sandbox/rails/compose.yaml pull db

使用 -p 指定项目名称

每个配置都有一个项目名称。Compose 按照以下优先级机制设置项目名称:

  • -p 命令行标志
  • COMPOSE_PROJECT_NAME 环境变量
  • 配置文件中的顶级 name: 变量(或使用 -f 指定的一系列配置文件中的最后一个 name:
  • 包含配置文件的项目目录的 basename(或包含使用 -f 指定的第一个配置文件的目录)
  • 如果未指定配置文件,则为当前目录的 basename。项目名称只能包含小写字母、十进制数字、破折号和下划线,并且必须以小写字母或十进制数字开头。如果项目目录或当前目录的 basename 违反此约束,您必须使用其他机制之一。
$ docker compose -p my_project ps -a
NAME                 SERVICE    STATUS     PORTS
my_project_demo_1    demo       running

$ docker compose -p my_project logs
demo_1  | PING localhost (127.0.0.1): 56 data bytes
demo_1  | 64 bytes from 127.0.0.1: seq=0 ttl=64 time=0.095 ms

使用配置文件启用可选服务

使用 --profile 指定一个或多个活动配置文件。调用 docker compose --profile frontend up 会启动具有 frontend 配置文件和未指定任何配置文件的服务。您还可以启用多个配置文件,例如,使用 docker compose --profile frontend --profile debug up 将启用 frontenddebug 配置文件。

配置文件也可以通过 COMPOSE_PROFILES 环境变量设置。

配置并行度

使用 --parallel 指定并发引擎调用的最大并行级别。调用 docker compose --parallel 1 pull 将一次拉取 Compose 文件中定义的可拉取镜像。这也可以用于控制构建并发。

并行度也可以通过 COMPOSE_PARALLEL_LIMIT 环境变量设置。

设置环境变量

您可以为各种 docker compose 选项设置环境变量,包括 -f-p--profiles 标志。

设置 COMPOSE_FILE 环境变量等效于传递 -f 标志,COMPOSE_PROJECT_NAME 环境变量与 -p 标志作用相同,COMPOSE_PROFILES 环境变量等效于 --profiles 标志,而 COMPOSE_PARALLEL_LIMIT--parallel 标志作用相同。

如果命令行上明确设置了标志,则关联的环境变量将被忽略。

COMPOSE_IGNORE_ORPHANS 环境变量设置为 true 可阻止 docker compose 检测项目的孤立容器。

COMPOSE_MENU 环境变量设置为 false 可在附加模式下运行 docker compose up 时禁用帮助菜单。或者,您也可以运行 docker compose up --menu=false 来禁用帮助菜单。

使用空运行模式测试您的命令

使用 --dry-run 标志测试命令,而无需更改应用程序堆栈状态。空运行模式会显示 Compose 在执行命令时应用的所有步骤,例如:

$ docker compose --dry-run up --build -d
[+] Pulling 1/1
 ✔ DRY-RUN MODE -  db Pulled                                                                                                                                                                                                               0.9s
[+] Running 10/8
 ✔ DRY-RUN MODE -    build service backend                                                                                                                                                                                                 0.0s
 ✔ DRY-RUN MODE -  ==> ==> writing image dryRun-754a08ddf8bcb1cf22f310f09206dd783d42f7dd                                                                                                                                                   0.0s
 ✔ DRY-RUN MODE -  ==> ==> naming to nginx-golang-mysql-backend                                                                                                                                                                            0.0s
 ✔ DRY-RUN MODE -  Network nginx-golang-mysql_default                                    Created                                                                                                                                           0.0s
 ✔ DRY-RUN MODE -  Container nginx-golang-mysql-db-1                                     Created                                                                                                                                           0.0s
 ✔ DRY-RUN MODE -  Container nginx-golang-mysql-backend-1                                Created                                                                                                                                           0.0s
 ✔ DRY-RUN MODE -  Container nginx-golang-mysql-proxy-1                                  Created                                                                                                                                           0.0s
 ✔ DRY-RUN MODE -  Container nginx-golang-mysql-db-1                                     Healthy                                                                                                                                           0.5s
 ✔ DRY-RUN MODE -  Container nginx-golang-mysql-backend-1                                Started                                                                                                                                           0.0s
 ✔ DRY-RUN MODE -  Container nginx-golang-mysql-proxy-1                                  Started                                     Started

从上面的示例中,您可以看到第一步是拉取 db 服务定义的镜像,然后构建 backend 服务。接下来,创建容器。db 服务启动,而 backendproxy 则等到 db 服务健康后才启动。

空运行模式适用于几乎所有命令。您不能将空运行模式与不更改 Compose 堆栈状态的命令一起使用,例如 pslslogs 等。

子命令

命令描述
docker compose alpha实验性命令
docker compose attach将本地标准输入、输出和错误流附加到服务的运行容器
docker compose bridge将 compose 文件转换为另一种模型
docker compose build构建或重建服务
docker compose config以规范格式解析、解析和呈现 compose 文件
docker compose cp在服务容器和本地文件系统之间复制文件/文件夹
docker compose create为服务创建容器
docker compose down停止并移除容器、网络
docker compose events接收来自容器的实时事件
docker compose exec在运行中的容器中执行命令
docker compose images列出已创建容器使用的镜像
docker compose kill强制停止服务容器
docker compose logs查看容器的输出
docker compose ls列出正在运行的 compose 项目
docker compose pause暂停服务
docker compose port打印端口绑定的公共端口
docker compose ps列出容器
docker compose publish发布 compose 应用程序
docker compose pull拉取服务镜像
docker compose push推送服务镜像
docker compose restart重启服务容器
docker compose rm移除已停止的服务容器
docker compose run在服务上运行一次性命令
docker compose start启动服务
docker compose stop停止服务
docker compose top显示正在运行的进程
docker compose unpause恢复服务
docker compose up创建并启动容器
docker compose version显示 Docker Compose 版本信息
docker compose volumes列出卷
docker compose wait阻塞直到所有(或指定)服务的容器停止。
docker compose watch监视服务的构建上下文,并在文件更新时重建/刷新容器
© . This site is unofficial and not affiliated with Kubernetes or Docker Inc.