Docker Compose 发布说明

目录

如需更多详细信息,请参阅 Compose 仓库中的发布说明

2.31.0

2024-11-28

更新

  • 依赖项升级:将 compose-go 提升至 v2.4.5
  • 依赖项升级:将 Docker 引擎和 CLI 升级至 v27.4.0-rc.2
  • 依赖项升级:将 buildx 提升至 v0.18.0
  • 依赖项升级:将 buildkit 提升至 v0.17.1

错误修复和功能增强

  • 新增了使用 Docker Buildx Bake 构建 Docker Compose 服务的能力
  • 添加了 commit 命令,用于从运行中的容器创建新镜像。
  • 修复了未检测到网络变更的问题
  • 修复了容器按顺序停止导致重启过程变慢的问题

2.30.3

2024-11-07

更新

  • 依赖项升级:将 compose-go 提升至 v2.4.4

错误修复和功能增强

  • 修复了在使用 --watch 时不应重启服务却重启的问题。
  • 改进在 Compose 文件中多次使用相同 YAML 锚点的修复方案

2.30.2

2024-11-05

更新

  • 依赖项升级:将 compose-go 提升至 v2.4.3

错误修复和功能增强

  • 修复了更新服务配置文件时重新创建服务的问题
  • 修复了在 Compose 文件中多次使用相同 YAML 锚点时出现的回归问题

2.30.1

2024-10-30

更新

  • 依赖项升级:将 compose-go 提升至 v2.4.2

错误修复和功能增强

  • 修复了在使用标准输入作为 -f 标志的输入时出现的回归问题
  • 修复了在 Compose 文件中多次使用相同 YAML 锚点时出现的回归问题

2.30.0

2024-10-29

更新

  • 依赖项升级:将 compose-go 提升至 v2.4.1
  • 依赖项升级:将 Docker 引擎和 CLI 升级至 v27.3.1

错误修复和功能增强

  • 介绍服务钩子支持。
  • 添加了 alpha generate 命令。
  • 添加了 export 命令。
  • 已支持在 Compose 文件中使用 devices 进行 CDI 设备请求。
  • 修复了大量错误。

2.29.7

2024-09-20

错误修复和功能增强

  • 修复了在使用挂载 API 进行绑定挂载时的回归问题。

2.29.6

2024-09-19

更新

  • 依赖项升级:将 Docker 引擎和 CLI 提升至 v27.3.0-rc.2

错误修复和功能增强

  • 修复了 Windows 容器绑定挂载的问题。

2.29.5

2024-09-17

错误修复和功能增强

  • 修复了 WSL2 上绑定挂载的问题。

2.29.4

2024-09-16

更新

  • 依赖项升级:将 buildx 提升至 v0.17.1
  • 依赖项升级:将 Docker 引擎和 CLI 升级至 v27.3.0-rc.1

错误修复和功能增强

  • 修复了重启存在分歧的依赖项时服务无法停止的问题。
  • 修复了 OTEL 客户端上潜在的 nil 指针错误。

2.29.3

2024-09-12

更新

  • 依赖项升级:将 compose-go 提升至 v2.2.0 版本
  • 依赖项升级:将 Docker 引擎和 CLI 提升至 v27.2.1

错误修复和功能增强

  • 绑定挂载与 rebuild 的组合现在允许与 watch 一起使用。
  • 修复了在使用 --no-depsup 时重新创建容器的一个错误。
  • 修复了重新附加容器时未关闭流的错误。
  • 在使用 -V--renew-anon-volumes 时,恢复了匿名卷的重建功能。

2.29.2

2024-08-16

更新

  • 依赖项升级:将 compose-go 提升至 v2.1.6
  • 依赖项升级:将 Docker 引擎和 CLI 升级至 v27.1.2
  • 依赖项升级:将 buildx 提升至 v0.16.2 版本
  • 依赖项升级:将 buildkit 提升至 v0.15.2
  • 依赖项升级:将 golang 提升至 v1.21.12
  • 依赖项升级:将 sys 提升至 v0.22.0
  • 依赖项升级:将 flock 提升至 v0.12.1

错误修复和功能增强

  • 修复了关于 docker compose kill 用法的文档。
  • 在 build.go 中修复了来自 toAPIBuildOptions 的冗余条件。
  • 在引入 x-initSync 后,修复了 Compose 重启时初始 Watch sync 的问题。
  • 修复了一个问题,该问题导致在 sync-restart 个 Watch 操作时单个容器的 Compose 进程停止。

2.29.1

2024-07-23

更新

  • 依赖项升级:将 compose-go 提升至 v2.1.5。
  • 依赖项升级:将 Docker 引擎和 CLI 提升至 v27.1.0。

错误修复和功能增强

  • 通过更多字段增强 JSON 进度事件。

2.29.0

2024-07-17

更新

  • 依赖项升级:将 compose-go 提升至 v2.1.4
  • 依赖项升级:将 Docker 引擎和 CLI 提升至 v27.0.3
  • 依赖项升级:将 buildx 提升至 0.16.0 版本
  • 依赖项升级:将 buildkit 提升至 0.15.0 版本
  • 依赖项升级:将 containerd 升级至 1.7.19 版本

错误修复和功能增强

  • 添加了 JSON 流进度写入器。
  • docker compose watch 命令添加了 --prune 标志。
  • 选择服务后,不必要的资源现已被排除。
  • 没有值的空变量在容器中会被取消设置。

2.28.1

2024-06-24

错误修复和功能增强

  • 修复了在 v2.28.0 中当 TTY 模式可用时进度显示损坏的问题。

2.28.0

2024-06-21

更新

  • 依赖项升级:将 compose-go 提升至 v2.1.3
  • 依赖项升级:将 Docker 引擎和 CLI 升级至 v27.0.1-rc.1

2.27.3

2024-06-21

更新

  • 依赖项升级:将 buildx 提升至 0.15.1 版本
  • 依赖项升级:将 buildkit 提升至 0.14.1 版本

2.27.2

2024-06-20

更新

  • 依赖项升级:将 golang 提升至 1.21.11 版本
  • 依赖项升级:将 Docker 引擎和 CLI 升级至 v26.1.4
  • 依赖项升级:将 buildx 提升至 0.15.0 版本
  • 依赖项升级:将 buildkit 提升至 0.14.0 版本
  • 依赖项升级:将 containerd 提升至 1.7.18 版本

错误修复和功能增强

  • config 命令添加了 --environment 标志
  • 修复了一个导致在使用 watch 进程作为 up 命令的标志时发生挂起的错误。
  • 修复了 .env 个文件中 COMPOSE_PROFILES 的用法

2.27.1

2024-05-24

更新

  • 依赖项升级:将 compose-go 提升至 v2.1.1
  • 依赖项升级:将 Docker 引擎和 CLI 升级至 v26.1.3
  • 依赖项升级:将 buildx 提升至 0.14.1 版本
  • 依赖项升级:将 containerd 提升至 1.7.17 版本

错误修复和功能增强

  • 在 CLI 中添加了导航菜单,您可以在其中于 Docker Desktop 打开您的 Compose 文件
  • --menu 标志在 docker compose up 中添加了文档
  • 修复了将 --resolve-image-digests--no-interpolate 一起使用时的错误
  • 您现在可以使用本地 .env 文件来覆盖 COMPOSE_* 环境变量

2.27.0

2024-04-24

更新

  • 依赖项升级:将 golang 提升至 1.21.9 版本
  • 依赖项升级:将 compose-go 提升至 v2.1.0
  • 依赖项升级:将 Docker 引擎和 CLI 升级至 v26.1.0

错误修复和功能增强

  • 引入了 --abort-on-container-failure 标志
  • 引入了 --all-resources 以不排除未被服务使用的资源
  • 引入了对 build.entitlements 的支持
  • 修复了一个错误,现在当运行 docker compose down/stop -p 时,Docker Compose 会忽略缺失的容器。
  • 在兼容模式下修复了对 --flag=value 语法的支持

2.26.1

2024-03-29

更新

  • 依赖项升级:opencontainers/image-spec v1.1.0

错误修复和功能增强

  • 在输出中添加了镜像拉取失败的原因
  • 修复了在使用 --no-build--watch 运行时发生的崩溃问题
  • 修复了在没有可用 TTY 且启用菜单时的崩溃问题
  • 提高了菜单操作的可读性

2.26.0

2024-03-22

更新

  • 依赖项升级:将 compose-go 提升至 v2.0.2
  • 依赖项升级:将 Docker 提升至 v26.0.0

错误修复和功能增强

  • 缩短了 Otel 追踪命令的超时时间
  • 已修复 config --format json
  • 修复了关于默认构建镜像名称的文档
  • 在 Compose 中为绑定挂载引入了同步文件共享功能
  • 已添加对 annotations 的支持
  • 引入了 config --variables 以列出 Compose 模型变量
  • docker compose up 内添加了导航菜单

2.25.0

2024-03-15

更新

  • 依赖项升级:将 compose-go 提升至 v2.0.0

错误修复和功能增强

  • 已恢复 config 的行为,直到设置 --no-interpolate
  • 修复服务名称的自动补全功能
  • 已为 up 命令添加 --watch 标志

2.24.7

2024-03-06

更新

  • 依赖项升级:将 golang 提升至 1.21.8 版本
  • 依赖项升级:将 compose-go 提升至 2.0.0-rc8
  • 依赖项升级:将 Docker 提升至 v24.0.4

错误修复和功能增强

  • Compose 现在确保网络的优先级排序顺序稳定
  • 修复了默认值中使用花括号的插值问题(例如 JSON)
  • 修复了非唯一 container_name 值的验证问题
  • 修复了针对 develop.watch 的验证问题
  • 已修复 include 的环境加载问题
  • 修复了合并标签/网络时的恐慌错误
  • 添加了对在使用 include 时支持 --no-path-resolution 的功能
  • 修复了缺失项目名称的错误
  • 已修复 --no-interpolate 标志于 config
  • 为 Windows 上的监视模式添加了文件锁定问题的变通解决方案
  • 修复了重复的退出代码状态消息
  • Compose 现在在 up 上尊重 COMPOSE_REMOVE_ORPHANS

2.24.6

2024-02-15

更新

  • 依赖项升级:将 cli 提升至 25.0.3 版本
  • 依赖项升级:将 compose-go 提升至 2.0.0-rc.7

错误修复和功能增强

  • 修复了当项目文件通过 COMPOSE_FILE 变量设置时,.env 文件加载的问题。
  • ps --status=exited 的行为与 Docker CLI 的行为保持一致
  • 修复了收集大量日志时的死锁问题

2.24.5

2024-01-30

错误修复和功能增强

  • 修复了在 Windows 上构建镜像时出现的“failed to solve: changes out of order”错误。

2.24.4

2024-01-29

更新

  • 依赖项升级:将 cli 提升至 25.0.1 版本
  • 依赖项升级:将 Docker 升级至 25.0.1 版本
  • 依赖项升级:将 compose-go 提升至 2.0.0-rc.3

错误修复和功能增强

  • 修复了在启用 Swarm 时检查外部网络存在性的问题。
  • 添加了对 storage_opt 属性的支持。

2.24.3

2024-01-24

此版本修复了 Compose v2.24.0 中引入的 Docker Desktop for Windows 的构建问题。

更新

  • Compose 现在使用 fsutils 库的自定义版本。

2.24.2

2024-01-22

更新

  • 依赖项升级:将 cli 提升至 25.0.0 正式版
  • 依赖项升级:将 compose-go 提升至 2.0.0-rc.2

2.24.1

2024-01-18

更新

  • 依赖项升级:将 cli 提升至 25.0.0-rc3
  • 依赖项升级:将 Docker 提升至 25.0.0-rc3 版本
  • 依赖项升级:将 compose-go 提升至 2.0.0-rc.1
  • 依赖项升级:将 containerd 提升至 1.7.12 版本

错误修复和功能增强

  • up 期间重新设计了容器状态的显示方式
  • 修复了使用 healthcheck.start_interval 所需的引擎版本。
  • 已从 alpha 命令中移除 watch 子命令
  • 修复了处理接收信号时的一个错误

2.24.0

2024-01-11

更新

  • 依赖项升级:将 cli 提升至 25.0.0-beta.3
  • 依赖项升级:将 compose-go 提升至 2.0.0-beta.3
  • 依赖项升级:将 Golang 升级至 1.21.6 版本

错误修复和功能增强

  • 引入了 docker compose attach,用于将本地的标准输入、输出和错误流附加到服务正在运行的容器上。
  • 引入了 docker compose stats 以显示容器资源使用统计信息的实时流。
  • 引入了 docker compose ps --orphans 以包含/排除未声明的服务。
  • 引入了 docker compose logs --index 以选择一个副本容器。
  • 引入了 docker compose build --with-dependencies 以同时构建依赖项。
  • 已为构建添加源策略。
  • 已包含用于命令行补全的已禁用服务。
  • 在 ps JSON 输出中恢复了 Project
  • 为 AWS ECR 添加了 OCI 1.0 回退支持。
  • 现在构建无需解析环境。
  • Compose 现在会在收到 SIGINT/SIGTERM 信号时发送取消事件,适用于 compose up
  • --verbose 时,通过暴露服务端口修复了日志问题。
  • 已修复内联配置和环境定义的配置,使其在显式设置目标之前挂载到 /<id> 目录下。
  • --pull always --no-build 的固定组合。
  • 修复了日志打印机中的竞态条件。
  • 修复了当命令上下文被取消时 docker compose up 的清理问题。

2.23.3

2023-11-22

更新

  • 依赖项升级:将 buildx 提升至 v0.12.0

2.23.2

2023-11-21

更新

  • 依赖项升级:将 buildkit 提升至 0.12.3 版本
  • 依赖项升级:将 Docker 提升至 24.0.7 版本
  • 依赖项升级:将 cli 提升至 24.0.7 版本
  • 依赖项升级:提升至 1.20.2 版本

错误修复和功能增强

  • Compose 现在支持通过 push 命令使用 builds.tags
  • Compose Watch 现在会在启动时重新构建服务镜像。
  • 现在 --remove-orphans 不再将被禁用的服务视为孤立服务进行管理。
  • Compose 仅在至少有一个服务需要构建时,才会显示 Building 条输出日志。

2.23.1

2023-11-16

更新

  • 依赖项升级:将 compose-go 提升至 v1.20.1

错误修复和功能增强

  • 使 Compose 与 OCI 制品最佳实践保持一致。
  • 引入了 --resolve-image-digests,以便用户在发布 Compose 应用程序时可以通过摘要密封服务镜像。
  • 改进了 Compose Watch 配置的日志记录。
  • Compose 现在会拒绝使用 secrets|configs.drivertemplate_driver 的 Compose 文件。
  • 如果缺少依赖项,Compose 现在将无法启动。
  • 修复了 SIGTERM 支持以停止/终止堆栈。
  • 修复了 --hash 回归问题。
  • 修复了当外部网络处于被监控服务时,“更新后应用程序无法启动”的问题。
  • 已修复 --pull 条文档。
  • 通过在 cmd/compose/build.go 中添加换行符修复了显示问题。
  • 应用过滤后,Compose 将静默渲染。
  • 从 docker-compose up 输出中移除了项目前缀。

2.23.0

2023-10-18

更新

  • 依赖项升级:将 compose-go 提升至 v1.20.0 版本
  • 依赖项升级:将 containerd 升级至 1.7.7 版本

错误修复和功能增强

  • 为 publish 命令添加了干运行(dry-run)支持
  • 已添加 COMPOSE_ENV_FILES 个环境变量以传递环境变量文件列表
  • 已添加 sync+restart 个操作到 compose watch
  • 默认情况下将输出与 Docker CLI compose ps 对齐,并引入 --no-trunc 以保留之前的行为。
  • 修复了 upconfigure 之间的哈希不一致问题
  • 当使用明确的服务名称运行 down 时启用的配置文件
  • 修复了当提供的拉取策略无效时的问题

2.22.0

2023-09-21

注意

watch 命令现已正式可用(GA)。您可以直接从根命令 docker compose watch 中使用它。 更多信息,请参阅 文件监视

更新

  • 依赖项升级:将 Golang 提升至 1.21.1 版本
  • 依赖项升级:将 compose-go 提升至 v1.19.0
  • 依赖项升级:将 buildkit 提升至 v0.12.2

错误修复和功能增强

  • 添加了对 publish 命令的实验性支持。
  • 命令 watch 现在会在启动时构建并运行项目。
  • --pull 标志添加了 policy 选项。
  • 修复了 up 命令退出时的各种竞态条件和死锁问题。
  • 修复了构建过程中的多平台问题。
  • 即使其 profiles 未激活,也会启用明确请求的服务。
  • 修复了当声明的 env_file 缺失时出现的 config 问题。
  • 已将 BuildOptions 传递给 uprun 命令。

2.21.0

2023-08-30

注意

docker compose psdocker compose ps --format=json 的格式已更改,以便更好地与 docker ps 的输出保持一致。请参阅 compose#10918

更新

  • 依赖项升级:将 compose-go 提升至 v1.18.3

错误修复和功能增强

  • 更改了 docker compose psdocker compose ps --format=json 的输出,以与 Docker CLI 保持一致。
  • 已添加对多文档 YAML 文件的支持。
  • 已支持通过 include(实验性功能)从 Git 仓库加载远程 Compose 文件。
  • 修复了构建期间不正确的代理变量。
  • 修复了容器退出时日志被截断的问题。
  • 修复了在使用 include--profile 时出现的“无此服务”错误。
  • 使用 include 时修复了 .env 个覆盖项。

2.20.3

2023-08-11

更新

  • 依赖项升级:将 Golang 升级至 1.21.0 版本
  • 依赖项升级:将 compose-go 提升至 v1.18.1
  • 依赖项升级:将 buildkit 提升至 v0.12.1

错误修复和功能增强

  • 提高了 watch 同步的速度和可靠性。
  • 在首行构建信息中添加了构建者名称。
  • 改进了 --project-directory--profile 的 shell 自动补全功能。
  • 修复了代理配置未传递给旧版构建器的构建问题。
  • 当选项依赖成功存在时,移除了不必要的警告。

2.20.2

2023-07-19

错误修复和功能增强

  • 已添加对 depends_on.required 属性的支持。
  • 修复了构建尝试推送未命名服务镜像的问题。
  • 修复了一个导致未检查 Windows 上目标密钥路径的错误。
  • 修复了为使用 extends.file 的服务解析构建上下文路径的错误。

2.20.1

2023-07-18

更新

  • 依赖项升级:将 Golang 提升至 1.20.6 版本
  • 依赖项升级:将 buildx 提升至 v0.11.2
  • 依赖项升级:将 buildkit 提升至 v0.12
  • 依赖项升级:将 docker-cli 提升至 v24.0.5-dev 版本

2.20.0

2023-07-11

更新

  • 依赖项升级:将 docker/cli-docs-tools 提升至 v0.6.0
  • 依赖项升级:将 Docker 提升至 v24.0.4
  • 依赖项升级:将 buildx 提升至 v0.11.1 版本

错误修复和功能增强

  • 引入了 wait 命令。
  • build 命令添加了对 --builderBUILDX_BUILDER 的支持。
  • 添加了对 Compose 规范中 includeattach 属性的支持。
  • 修复了初始化 CLI 客户端时的 DryRun 模式问题。
  • 修复了当服务拥有多个网络时随机丢失网络的错误。
  • 修复了 Secrets 文件权限值以符合 Compose 规范。
  • 修复了关于 no-deps 标志未生效的问题。
  • 修复了一些源代码注释。
  • 修复了当 --index 未设置选择时的一个错误。
  • 修复了 wait e2e 测试中的进程泄漏问题。
  • 提升了部分测试速度。

2.19.1

2023-06-29

更新

  • 依赖项升级:将 compose-go 提升至 v1.15.1

错误修复和功能增强

  • 修复了 compose up 上偶发的“容器未连接到网络”错误。
  • compose build 上修复了“请指定构建上下文”错误。
  • Compose 现在会在使用服务的 watch 配置中的绑定挂载时发出警告。

2.19.0

2023-06-21

更新

  • 依赖项升级:将 compose-go 提升至 v1.15.0
  • 依赖项升级:将 buildx 提升至 v0.11.0
  • 依赖项升级:将 Docker 提升至 v24.0.2
  • 依赖项升级:将 Golang 提升至 1.20.5 版本

错误修复和功能增强

  • 引入了通过 compose down 选择停止单个服务的功能。
  • 添加 --progress 作为顶级标志,用于配置进度用户界面样式。
  • 引入了 run --cap-add 以使用服务镜像运行维护命令。
  • 修复了检测 Swarm 模式时的一个错误。
  • 修复了通过 COMPOSE_PROJECT_NAME 环境变量设置项目名称时的一个错误。
  • down 命令的帮助下调整了卷标志的显示。
  • 修复了 up 命令中的一个错误,该错误之前会静默忽略缺失的 depends_on 服务。
  • 将前向信号与容器行为对齐,遵循 docker run 的行为。
  • Compose 现在可以检测网络名称冲突。
  • 修复了关于现有卷的警告消息中的拼写错误。
  • Compose 现在会在 compose -p x logs -f 命令之后检测到新启动的服务。
  • 修复了当项目名为 compose 时的一个错误。
  • 修复了当目录不存在时 watch 命令中的一个错误。
  • 移除了在重启或停止服务时默认的 10 秒超时限制。
  • 修复了 watch 中的一个错误,该错误默认应用了“重建”策略。
  • 修复了一个竞态条件,当某个容器退出时等待其他容器的问题。
  • 添加了一条警告,告知用户 build.secrets 不支持 uid、gid 和 mode。
  • 修复了 watch 中的一个错误,该错误原本会监控整个构建上下文,而现已改为仅监控配置的路径。
  • Compose 现在按创建日期对容器进行排序,以便先缩减较旧的容器。
  • 修复了 Windows 环境下文档生成任务中的一个错误。
  • 已更新文档,以反映干跑模式(Dry Run mode)功能已完成。
  • 改进了网络标签不匹配时的诊断消息。
  • 修复了一个在没有涉及构建时渲染 Building 部分的错误。
  • 修复了代码覆盖率指标中的一个错误。
  • 已添加 OTEL 初始化。
  • 添加了 GitHub Action,以使用 Compose 边缘版本触发 Docker Desktop 的端到端测试。
  • 为 dependabot 添加了更多忽略规则。

2.18.1

2023-05-17

错误修复和功能增强

  • 修复了构建镜像时出现的“未找到镜像”错误

2.18.0

2023-05-16

更新

  • 依赖项升级:将 compose-go 提升至 v1.13.5
  • 依赖项升级:将 buildkit 提升至 v0.11.6
  • 依赖项升级:将 Docker 升级至 v23.0.5

错误修复和功能增强

  • 使用 --dry-run 添加了干运行支持
  • 添加了 viz 子命令的首个(测试版)实现
  • 引入了 --no-path-resolution 以跳过相对路径的解析
  • 引入了 COMPOSE_ANSI 来定义 --ansi 的默认值
  • 引入了 COMPOSE_STATUS_STDOUT 以将状态消息发送到 stdout
  • 修复了 BuildKit progressui 的集成问题
  • 修复了一个阻止事件循环收集日志的错误
  • 已恢复对 --memory 的支持
  • 修复了一个导致容器在终止后无法停止的缺陷
  • Compose 现在允许用户声明构建秘密目标
  • 修复了一个导致在配置未更改时容器被重新创建的缺陷
  • 修复了当 --parallel 与大量依赖服务一起使用时出现的竞态条件
  • Compose 现在会检查本地镜像是否与所需的平台匹配
  • 修复了当使用 --project-name 运行 compose down 时本地镜像删除的问题。
  • Compose 现在会检测尝试移除网络的活跃端点,并发出警告后跳过该操作。
  • 已移除不必要的 [] 输出
  • Compose 检测到 Windows 终端不是 console.File,以避免发生恐慌性错误。
  • --parallel 现在优先于 COMPOSE_PARALLEL_LIMIT
  • 当 Swarm 被禁用时,Compose 现在会报告未找到外部网络

2.17.2

2023-03-26

更新

  • 依赖项升级:将 compose-go 提升至 v1.13.2

错误修复和功能增强

  • 修复了目录名称中包含大写字母或 . 时导致的项目名称无效错误。已修复 compose#10405

2.17.1

2023-03-24

更新

  • 依赖项升级:将 buildkit 提升至 v0.11.5
  • 依赖项升级:将 compose-go 提升至 v1.13.1
  • 依赖项升级:将 golang 提升至 1.20.2 版本

错误修复和功能增强

  • 修复了在 alpha watch 命令上的恐慌问题。拉取请求 compose#10393
  • 已防止名为 extensions 的服务发生冲突。已修复 compose-go#247
  • Compose 现在更一致地验证项目名称。已修复 compose-go#363

2.17.0

2023-03-23

升级说明

  • 项目名称验证更加严格。项目名称只能包含字母、数字、_-,必须为小写,并且以字母或数字开头。
  • YAML 中的布尔字段必须是 truefalse。不支持已弃用的 YAML 1.1 值,例如 "on" 或 "no"。
  • 重复的 YAML 合并键 (<<) 将被拒绝。

更新

  • 依赖项升级:将 buildkit 提升至 v0.11.4
  • 依赖项升级:将 buildx 提升至 v0.10.4
  • 依赖项升级:将 containerd 升级至 1.6.18 版本
  • 依赖项升级:将 compose-go 提升至 v1.13.0 版本

错误修复和功能增强

  • up 命令中引入了 --wait-timeout。已修复 compose#10269
  • 已创建 compose service --hash 个输出,按服务名称排序。拉取请求 compose#10278
  • Compose 现在渲染紧凑的 TUI 进度报告以监控层下载。拉取请求 compose#10281
  • depends_on 引入了 restart。已修复 compose#10284
  • 添加了对 NO_COLOR 环境变量的支持。已修复 compose#10340
  • 进度写入器现在使用 dockercli.Err 流。已修复 compose#10366
  • build 服务配置中添加了对 additional_contexts 的支持。已修复 compose#9461 compose#9961
  • watch 模式下添加了文件删除/重命名处理。拉取请求 compose#10386
  • watch 模式下引入了 ignore 属性。拉取请求 compose#10385
  • Compose 现在使用进度写入器来显示复制状态。拉取请求 compose#10387
  • 更新了 -p/--project-name 标志的参考文档。已修复 docs#16915compose-spec#311
  • 引入了一个 replace 标签,用于跟踪服务的旧容器与新容器之间的关系。已修复 compose#9600
  • 修复了一个缺陷,该缺陷导致在重启某个服务后,其依赖的服务未被重新启动。已修复 compose#10263
  • watch 模式下,Compose 现在会忽略没有 build 部分的服务。已修复 compose#10270
  • Compose 现在为伪子命令应用配置选项。已修复 compose#10286
  • Compose 仅管理带有 config_hash 标签的容器(即由 Compose 创建的容器)。已修复 compose#10317
  • 如果项目名称在规范化后为空,Compose 将触发错误。已修复 compose#10313
  • Compose 仅通过检查 depends_on 个关系来重启所需的服务。已修复 compose#10337
  • 修复了小型终端上的显示问题。已修复 compose#10322
  • 修复了构建内置镜像 ID 集合时的问题。拉取请求 compose#10372
  • 使用配置的名称分隔符来定义一次性容器名称。已修复 compose#10354
  • 修复了在重新创建容器时出现的并发 map 读/写问题。已修复 compose#10319
  • Compose 现在支持 stoprm 命令的干跑(Dry Run)模式。拉取请求 compose#10257
  • Compose 现在支持 pull 命令的干跑(Dry Run)模式。拉取请求 compose#10341
  • Compose 现在支持 push 命令的干运行(Dry Run)模式。拉取请求 compose#10355
  • Compose 现在支持 exec 命令的干跑(Dry Run)模式。拉取请求 compose#10252
  • Compose 现在支持 restart 命令的干运行(Dry Run)模式。拉取请求 compose#10339

2.16.0

2023-02-08

更新

  • 依赖项升级:将 Docker 提升至 v23.0.0 版本
  • 依赖项升级:将 docker-cli 提升至 v23.0.0
  • 依赖项升级:将 buildkit 提升至 v0.11.2
  • 依赖项升级:将 buildx 提升至 v0.10.2 版本
  • 依赖项升级:将 containerd 提升至 1.6.16 版本
  • 依赖项升级:将 golang 提升至 1.20 版本

错误修复和功能增强

  • compose create 命令引入了 --remove-orphans。已修复 compose#9718
  • 当终端过小时,缩短了 TTY 输出。已修复 compose#9962
  • 已添加 remove-orphans 功能以运行。已修复 compose#9718
  • 引入了实验性的 watch 命令。拉取请求 compose#10163
  • Compose 现在允许使用 -t 分配 TTY。已修复 compose#10161
  • 引入了实验性的 dry-run 命令。拉取请求 compose#10173
  • 更新了文档,以解释配置并行性的方法。拉取请求 compose#10198
  • 通过将 -n 别名为 --tail,使 logs 命令与 Docker CLI 保持一致。已修复 compose#10199
  • 已添加对 docker compose build --push 的支持。拉取请求 compose#10148
  • 已为 compose create 命令添加 --scale。已修复 compose#10208
  • 已将 convert 重命名为 config,以与 Compose V1 的用户体验保持一致。拉取请求 compose#10214
  • Compose 现在将代理配置作为构建参数传递。已修复 compose#8797
  • compose up 中修复了解析问题,方法是忽略非由 Compose 创建的容器。已修复 compose#10162
  • 修复了日志格式化器初始化中的 goroutine 泄漏问题。已修复 compose#10157
  • 修复了一个问题:当所有运行中的容器都已停止时,compose 日志无法正常退出。拉取请求 compose#10181
  • 修复了文档,以反映 docker compose psdocker ps 对齐。拉取请求 compose#10195
  • 修复了找不到远程 Buildx 驱动程序的问题。已修复 compose#9893
  • 改进了重建服务容器时的日志记录。拉取请求 compose#10236
  • 修复了一个问题,现在 Compose 仅等待受等待条件影响的容器。已修复 compose#10200
  • Compose 现在防止向 nil map 中赋值。已修复 compose#10244
  • 为 Cucumber 测试添加了专用的 GitHub Action 工作流。拉取请求 compose#10165
  • 在紧凑日志模式下切换时清理了 TUI 行。已修复 compose#10201
  • 添加了 Tilt 监视器,以在监视模式下检测代码变更。拉取请求 compose#10218
  • Compose 现在支持 kill 命令的干跑(Dry Run)模式。已修复 compose#10210
  • Compose 现在支持 pause 命令的干运行模式。已修复 compose#10217
  • Compose 现在支持 cp 命令的干运行模式。已修复 compose#10235

2.15.1

2023-01-09

更新

  • 升级依赖项以修复 Golan CVE-2022-27664 和 CVE-2022-32149

错误修复和功能增强

  • 新增了对 UTS 命名空间的支持。已修复 compose#8408
  • 修复了未设置过滤器时的过滤问题。已修复 路线图#418
  • 修复了构建步骤中并发映射写入的问题。拉取请求 compose#10151
  • 修复了当标准输入不是终端时的问题。已修复 compose#9739

2.15.0

2023-01-05

更新

  • 依赖项升级:将 compose-go 提升至 v1.8.1
  • 依赖项升级:将 cli-docs-tool 提升至 0.5.1 版本

错误修复和功能增强

  • service.build 部分中添加了对 privileged 属性的支持。拉取请求 compose#10112
  • 引入 --ignore-buildable 以在拉取时忽略可构建的镜像。已修复 compose#8805
  • 引入 --no-attach 以忽略某些服务输出。已修复 compose#8546
  • 修复了当 driver:none 设置时与 logs 相关的问题。已修复 compose#9030
  • Compose 现在依赖于 dockerCLI.streams。拉取请求 compose#10082
  • 修复了服务哈希必须排除副本的问题。已修复 compose#10077
  • Compose 现在根据项目而非运行中的容器来检查服务名称。已修复 compose#9951
  • 修复了安全选项支持(seccomp 和 unconfined)。已修复 compose#9505
  • 修复了在使用 compose config 时,若源文件较小则生成空文件的问题。已修复 compose#10121
  • 修复了 --pull 未应用于 compose up 的问题。已修复 compose#10125
  • Compose 不仅应忽略自动移除的容器,还应忽略处于“移除进行中”状态的孤立容器。拉取请求 compose#10136
  • Compose 根据 --parallel 限制构建并发数。已修复 compose#9091

2.14.2

2022-12-20

更新

  • 依赖项升级:将 containerd 提升至 1.6.14 版本

错误修复和功能增强

  • Compose 现在使用 DOCKER_DEFAULT_PLATFORM 来确定创建容器时的平台。已修复 compose#10041
  • Compose 现在能够检测依赖项启动失败的情况。已修复 compose#9732
  • 修复了 WCOW 卷挂载问题。已修复 compose#9577
  • 使用 --all=false 时仅列出正在运行的容器。已修复 compose#10085
  • 修复了运行 pull --ignore-pull-failures 时的回归问题。已修复 compose#10089
  • 修复了 CPU 配额问题。已修复 compose#10073
  • 修复了 compose 日志中的竞态条件。已修复 compose#8880
  • 已将 projectOptions 重命名为 ProjectOptions 以将其设为公开。已修复 compose#100102

2.14.1

2022-12-15

更新

  • 依赖项升级:将 Go 提升至 1.19.4 版本
  • 依赖项升级:将 containerd 提升至 1.6.12 版本

错误修复和功能增强

  • 已添加 --parallel 以限制并发引擎调用。拉取请求 compose#10030
  • up 日志中区分了 stdout 和 stderr。已修复 compose#8098
  • 已将 compose ps 个输出与 docker ps 对齐。已修复 compose#6867
  • 已添加 --include-deps 到推送命令。拉取请求 compose#10044
  • compose up 上引入了 --timestamp 选项。已修复 compose#5730
  • Compose 现在在从环境创建密钥时会应用 uid/gid。拉取请求 compose#10084
  • 修复了等待附加依赖项时的死锁问题。已修复 compose#10021
  • 修复了收集已拉取镜像 ID 时的竞态条件。已修复 compose#9897
  • Compose 不会为可构建的镜像停止 pull 命令。已修复 compose#8724
  • 修复了没有容器可附加时的极端情况。已修复 compose#8752
  • Compose 容器的启动必须按顺序运行,以便引擎在配置的范围内分配不同的端口。已修复 compose#8530
  • 修复了 repository:tag 的解析问题。已修复 compose#9208
  • 当用户明确设置时,从文件加载项目。已修复 compose#9554

2.14.0

2022-12-02

更新

  • 依赖项升级:将 compose-go 提升至 v1.8.0
  • 依赖项升级:将 Go 升级至 1.19.3 版本

错误修复和功能增强

  • 向服务定义中添加了 oom_score_adj 字段。拉取请求 compose#10019
  • 为 tmpfs 挂载权限添加了 mode 字段。拉取请求 compose#10031
  • Compose 现在在被中断时仅停止由 up 启动的服务。已修复 compose#10028
  • Compose 现在为目标服务加载隐式配置文件。已修复 compose#10025
  • 如果已设置 service.platform,则 Compose 无需设置 service.build.platforms。已修复 compose#10017
  • 如果在 buildx 镜像构建期间设置了 --ansi=never,则使用纯文本输出。已修复 compose#10020
  • COMPOSE_IGNORE_ORPHANS 环境变量现在的行为更加一致。已修复 compose#10035
  • Compose 现在在 convert 中使用了正确的镜像名称分隔符。已修复 compose#9904
  • 已修复使用 network_mode: service:NAME 的服务的 run 问题。已修复 compose#10036

2.13.0

2022-11-23

更新

  • 依赖项升级:将 containerd 提升至 1.6.10 版本
  • 依赖项升级:将 docker-credential-helpers 提升至 v0.7.0
  • 更新 CI 依赖项。拉取请求 compose#9982

错误修复和功能增强

  • convert 命令添加了 no-consistency 选项。已修复 compose#9963
  • run 命令添加了 build 选项。已修复 compose#10003
  • 已将 restart_policy.condition 固定映射为引擎支持的值。已修复 compose#8756docs#15936
  • 修复了缺失的 deploy.reservation.memory 支持。已修复 compose#9902
  • 修复了一个 bug,以防止在使用 --profile 个参数时错误地使用 COMPOSE_PROFILES。已修复 compose#9895
  • 修复了一个漏洞,防止在依赖将构建该镜像的服务时拉取服务的镜像。已修复 compose#9983
  • 修复了未找到容器编号标签时的解析问题。已修复 compose#10004
  • Compose 现在在未定义 service.platform 时使用由 DOCKER_DEFAULT_PLATFORM 定义的平台值。已修复 compose#9889
  • 移除了对已弃用依赖项 gotest.tools v2 的使用。拉取请求 compose#9935
  • 已从过期机器人流程中排除标记为 kind/feature 的问题。已修复 compose#9988

2.12.2

2022-10-21

更新

  • 更新 Docker Engine API 以恢复与 Linux 打包所需的 Golang 1.18 的兼容性。拉取请求 compose#9940

如需查看完整的变更日志或更多信息,请访问 Compose 仓库 2.12.2 发布页面

2.12.1

2022-10-21

安全

如需查看完整的变更日志或更多信息,请访问 Compose 仓库 2.12.1 发布页面

2.12.0

2022-10-18

更新

  • CI 更新文档仓库路径

  • 已升级 compose-go,从 1.5.1 至 1.6.0

  • 已更新至 Go 1.19.2,以修复 CVE-2022-2879、CVE-2022-2880 和 CVE-2022-41715

错误修复和功能增强

  • 在推送镜像时添加了 quiet 选项。已修复 compose#9089
  • 修复了针对 port 命令的误导性错误消息。拉取请求 compose#9909
  • 修复了一个缺陷,防止 Compose 在尝试删除不存在的容器时失败。此问题由 compose#9896 修复。
  • 已切换 GitHub 问题模板表单

如需查看完整的变更日志或更多信息,请访问 Compose 仓库 2.12.0 发布页面

2.11.2

2022-09-27

注意

  • 关于环境文件语法和插值的更新:请参阅 compose#9879
  • 在 Compose v2 中,不支持通过 .env 个文件设置 DOCKER_HOST

更新

错误修复和功能增强

  • 修复了一个 bug,以防止在有效的环境变量值上出现“无效模板”错误。修复了 compose##9806compose##9746compose##9704compose##9294
  • 修复了一个缺陷,以确保使用来自 docker compose build 的新镜像。修复了 compose#9856
  • 修复了当 DOCKER_DEFAULT_PLATFORM 未设置时的跨架构构建问题。已解决 compose#9864
  • 修复了使用 depends_on 时出现的间歇性冲突错误。已解决 compose#9014
  • 当入口点被覆盖时,已清除服务 CMD。修复了 compose#9622
  • 当未定义 build.platforms 时,配置默认的构建器导出。修复了 compose#9856
  • 修复了一个缺陷,以确保优先通过 DOCKER_DEFAULT_PLATFORM 或 service.platform 属性定义平台。修复了 compose#9864
  • .env 个文件中移除了对 DOCKER_HOST 的支持。修复了 compose#9210
  • 修复了一个错误,确保在运行命令中覆盖入口点时服务命令能干净执行。修复了 compose#9622
  • 依赖项:修复了图遍历期间的竞态条件。修复了 compose#9014
  • CI 现在可在 Windows 和 macOS 上运行,包括通过 Docker Desktop 进行的端到端测试。
  • service.platform 不属于 service.build.platforms 时,添加了更多信息。
  • GitHub 工作流安全加固

如需查看完整的变更日志或更多信息,请访问 Compose 仓库 2.11.2 发布页面

2.11.1

2022-09-20

错误修复和功能增强

  • 修复了一个错误,确保当服务数量为 volumes_from 时,条件 depends_on 仍能保持。修复了 compose#9843
  • 修复了一个缺陷:如果在构建时未指定构建平台,则保留在服务级别定义的平台。修复了 compose#9729
  • 修复了一个缺陷:在未提供构建平台时,确保在构建过程中保留通过 DOCKER_DEFAULT_PLATFORM 定义的平台。修复了 compose#9853

如需查看完整的变更日志或更多信息,请访问 Compose 仓库 2.11.1 发布页面

2.11.0

2022-09-14

更新

  • 依赖项升级:将 Golang 升级至 1.19.1 版本
  • 依赖项升级:将 github.com/docker/go-units 从 0.4.0 提升至 0.5.0
  • 依赖项升级:将 github.com/cnabio/cnab-to-oci 从 0.3.6 升级至 0.3.7
  • 依赖项升级:将 go.opentelemetry.io/otel 从 1.9.0 提升至 1.10.0
  • 依赖项升级:将 github.com/AlecAivazis/survey/v2 从 2.3.5 版本升级
  • 依赖项升级:将 go.opentelemetry.io/otel 从 1.4.1 版本提升至 1.9.0 版本
  • 依赖项升级:将 compose-go 从 1.5.0 升级至 1.5.1

错误修复和功能增强

  • 已添加平台构建。修复了 compose-spec#267
  • 日志现在仅过滤当前 Compose 文件中的服务。已修复 compose#9801
  • 在拉取镜像时增加了改进的输出警告。修复了 compose#9820
  • 修复了一个缺陷,以确保在服务存在依赖关系时能正确捕获退出代码。修复了 compose#9778
  • 已修复 down,使用 --rmi。修复了 compose#9655
  • 修复了在使用 --no-interpolate 选项时,docker-compose convert 将 $ 转换为 $$ 的问题。修复了 compose#9160
  • 已修复 build.go 个直接访问自定义标签导致程序崩溃的问题。参见 compose#9810
  • 已将新加载的环境变量应用到"DockerCli"和"APIClient"。修复了 compose#9210
  • 仅尝试在 compose start [services] 上启动指定的服务。修复了 compose#9796 compose#9807
  • 为在 down 上可靠清理而标记已构建的镜像。修复了 compose#9655

如需查看完整的变更日志或更多信息,请访问 Compose 仓库 2.11.0 发布页面

2.10.2

2022-08-26

错误修复和功能增强

如需查看完整的变更日志或更多信息,请访问 Compose 仓库 2.10.2 发布页面

2.10.1

2022-08-24

更新

错误修复和功能增强

  • 修复了当未设置 pull_policy 时跳过拉取固定镜像的问题。修复了 compose#9773
  • 在发布构件中恢复了 .sha256 个校验和文件。修复了 compose#9772
  • 修复了使用 --exit-code-from 时显示退出码的错误消息。解决了 compose#9782
  • 已修复:当 tag=latest 时,即使镜像已存在于本地,也会强制拉取镜像(原行为为 compose pull)。
  • 持续集成:修复了校验和检查问题,并恢复了独立的校验和文件。

如需查看完整的变更日志或更多信息,请访问 Compose 仓库 2.10.1 发布页面

2.10.0

2022-08-19

  • 已将新加载的环境变量应用到 DockerCliAPIClient。修复了 compose#9210
  • 新增了对 windows/arm64 和 linux/riscv64 的支持。

更新

  • 已将 Dockerfile 语法更新为最新稳定版本,并重命名了文档 Dockerfile。
  • 依赖项更新:升级了 BuildKit 和 docker/distribution。
  • 依赖项更新:在 CI 中使用的 Docker CLI 版本已更新至 v20.10.17。
  • 依赖项更新:已将 github.com/containerd/containerd 从 1.6.6 升级至 1.6.7
  • 依赖项更新:将 github.com/containerd/containerd 从 1.6.7 升级至 1.6.8
  • 依赖项更新:已升级至 Go 1.18.5。
  • 依赖项更新:已将 github.com/cnabio/cnab-to-oci 从 0.3.5 升级至 0.3.6

错误修复和功能增强

  • 将环境变量优先级恢复为操作系统优先于 .env 文件。修复了 compose#9737
  • 更新了使用字符串以保持一致性。
  • 在 Windows 上不区分大小写地解析环境变量。修复了 compose#9431
  • 已修复 compose up,确保在发出停止信号时不会停止依赖容器。这使得行为与 v1 版本保持一致。
  • Fixes compose#9696.
  • 修复了启动/重启/暂停/取消暂停的命令,以便在从 Compose 文件运行时,也能应用 Compose 模型。修复了 compose#9705compose#9705
  • 移除了部分子命令帮助文本中多余的空白字符。
  • 已修复 compose create 在命令行值被配置为默认值时不会覆盖服务拉取策略的问题。修复了 compose#9717
  • 已过滤掉"commandConn.Close- warning"消息。修复了 compose#8544
  • 修复了 up/start/run 命令,使其不再等待已禁用的依赖项。修复了 compose#9591
  • compose kill 上应用了 Compose 模型,添加了 --remove-orphans 个选项。修复了 compose#9742
  • 修复了 compose pull 以避免多次拉取相同的镜像。修复了 compose#8768
  • 将 golangci-lint 固定版本为 v1.47.3,目前 v1.48.0 存在问题。

如需查看完整的变更日志,请访问 Compose 仓库 2.10.0 发布页面

2.9.0

2022-08-7

重要

Compose v2.9.0 包含了对环境变量优先级的更改,但这些更改随后已被撤销。我们建议使用 v2.10 或更高版本以避免兼容性问题。

注意

此版本撤销了由 Compose v2.8.0 引入的破坏性变更, 该变更是通过 compose-go v1.3.0 引入的。

更新

错误修复和功能增强

  • 已覆盖 compose version 的父命令 PreRun 代码。修复了 compose#9698
  • 在 V2 中已修复 LinkLocalIPs。修复内容见 compose#9692
  • 已关联至 BUILDING.md 以获取测试说明。修复了 compose#9439

如需查看完整的变更日志或更多信息,请访问 Compose 仓库 2.9.0 发布页面

2.8.0

2022-07-29

重要

此版本通过 compose-go v1.3.0 和此 PR 引入了破坏性变更。 在此版本中,Docker Compose 会使用 -(短横线)而非 _(下划线)作为分隔符,为新的资源(网络、卷、密钥、配置等)生成新名称,并尝试连接或使用这些新创建的资源,而不是您现有的资源!

请使用 Compose v2.9.0 版本代替。

  • 引入了 --pull 标志,以允许强制拉取更新的服务镜像。修复了 compose#9451
  • 通过向 linter 添加 gocritic 提高了代码质量。

错误修复和功能增强

如需查看完整的变更日志或更多信息,请访问 Compose 仓库 2.8.0 发布页面

2.7.0

2022-07-20

  • 在构建步骤中添加了对环境密钥的支持。修复了 compose#9606

更新

错误修复和功能增强

  • 网络:防止因重复名称导致的问题。修复了 moby/moby#18864
  • 修复了在 compose upcompose down 命令中关闭网络名称的问题。修复了 compose#9630
  • 为运行 compose up --wait 时的一次性容器使用了适当的依赖条件。修复了 compose#9606
  • 修复了环境变量扩展问题。
  • 已验证的依赖服务存在于一致性检查中。修复了 compose#8910
  • 修复了环境变量中的哈希用法。修复了 compose#9509
  • Docker Build:已添加修复以尊重经典构建器的依赖顺序。修复了 compose#8538
  • 修复了由空字符串参数引起的恐慌问题。修复了 compose-switch#35
  • 修复了启动/重启功能,以避免影响一次性容器。修复了 compose#9509
  • 修复了当 volumes_from 指向容器而非服务时,保持容器引用的问题。修复了 compose#8874
  • build.go:添加了修复措施,如果 nil,则初始化 CustomLabels 映射。
  • 在运行端到端测试之前,添加了新的目标来构建 Compose Binaries。
  • 持续集成:已发布工作流,用于在文档仓库中打开包含最新更改的拉取请求。
  • e2e:为 ps 添加了测试。
  • e2e:拆分 pause 测试并添加更多用例。
  • e2e:添加更多启动/停止测试用例。

如需查看完整的变更日志或更多信息,请访问 Compose 仓库 2.7.0 发布页面

2.6.1

2022-06-23

更新

  • 升级:compose-go v1.2.8
  • 升级:buildx v0.8.2
  • 依赖项升级:已将 runc 升级至 1.1.2 版本
  • 依赖项升级:将 golang 提升至 1.18.3
  • 依赖项升级:已将 compose-go 提升至 v1.2.8
  • 依赖项升级:将 github.com/theupdateframework/notary 从 0.6.1 版本提升至 0.7.0 版本。
  • 依赖项升级:将 github.com/cnabio/cnab-to-oci 从 0.3.1-beta1 提升至 0.3.3。
  • 依赖项升级:已将 github.com/hashicorp/go-version 从 1.3.0 提升至 1.5.0。
  • 依赖项升级:将 github.com/stretchr/testify 从 1.7.0 提升至 1.7.2。
  • 依赖项升级:已将 github.com/docker/buildx 从 0.8.1 版本提升至 0.8.2。
  • 依赖项升级:将 github.com/AlecAivazis/survey/v2 从 2.3.2 提升至 2.3.5。
  • 依赖项升级:已将 github.com/containerd/containerd 从 1.6.2 提升至 1.6.6。

错误修复和功能增强

  • 已添加指向容器创建请求的链接。修复了 #9513
  • 修复了 compose run 以仅启动直接依赖项。修复了 #9459
  • 修复了在使用 --no-deps 选项时出现的 compose up 个“未找到服务”错误。已解决 #9427
  • 已修复 compose down 以遵循 COMPOSE_REMOVE_ORPHANS 环境变量。修复了 #9562
  • 修复了项目级别的绑定挂载卷问题。已修复 docker/for-mac#6317
  • 修复了属性 deploy.limits.cpusdeploy.limits.pids 的解析问题,以正确支持浮点数值。修复了 #9542#9501
  • 已修复 compose ps 输出以列出所有暴露的端口。修复了 #9257
  • 修复了 compose ps 代码中的拼写错误。
  • 已修复 docker compose,即使请求了已弃用的选项,也尊重 --no-ansi
  • 修复了网络名称和网络 ID 可能存在的歧义。
  • e2e:为 ps 添加了测试。
  • e2e:已将 JSON 解组为容器摘要。
  • e2e:修复了子测试并阻止了并行不安全测试。
  • e2e:将隔离的测试命令环境与系统环境分离。
  • e2e:修复了虚假的 ps 失败问题。
  • e2e:确保所有 compose 命令独立兼容。
  • e2e:改进了失败时的测试输出。

如需查看完整的变更日志或更多信息,请访问 Compose 仓库 2.6.1 发布页面

2.6.0

2022-05-30

  • 在 build 部分添加了 tags 属性。通过此属性,可以定义要应用于最终镜像的标签,这些标签将补充 image 属性中已定义的标签。
  • 添加了端到端测试,以确保环境变量优先级不会出现回归。
  • 添加了 ddev 的端到端测试。

更新

错误修复和功能增强

  • 已修复 compose up,使其仅附加到在启用了配置文件的项目中声明的服务。修复了 #9286
  • 修复了从多个服务拉取相同镜像时提示闪烁的问题。已修复 #9469
  • 修复了 compose 导入 .env 文件到操作系统环境的功能,以允许通过该文件设置变量(例如 DOCKER_BUILDKIT)。修复了 #9345
  • 已修复 TestLocalComposeUp 个在本地失败的项。
  • 修复了 make e2e-compose-standalone 的本地运行问题。

如需查看完整的变更日志或更多信息,请访问 Compose 仓库 2.6.0 发布页面

2.5.1

2022-05-17

更新

  • 依赖项更新:将 compose-go 升级至 1.2.5 版本。

错误修复和功能增强

  • 修复了当使用'--env-file'声明相对路径时,项目工作指令绝对路径的解析问题。修复了 docker/for-mac#6229
  • 已修复 compose down:现在拒绝所有参数以明确用法。修复了 #9151
  • 已修复 compose down:现在如果没有需要移除的内容,将以状态码 0 退出。修复了 #9426
  • 修复了使用 --no-log-prefix 选项时日志输出行中打印的多余空格问题。修复了 #9464
  • 明确了当传递多个 compose 文件时的默认工作目录。
  • cp 命令:默认行为是复制到服务的所有容器。

如需查看完整的变更日志或更多信息,请访问 Compose 仓库 2.5.1 发布页面

2.5.0

2022-04-29

错误修复和功能增强

  • 修复了当指定 -p 标志时使用 compose down 命令引发的恐慌问题。已修复 #9353
  • 将新创建的项目作为输入传递给启动服务 (docker compose up)。修复了 #9356
  • 在 docker-compose 文件的链接中声明的包含服务被视为隐式依赖项。已修复 #9301
  • 添加了 docker compose pull 命令的变更以遵循定义的策略:1) 跳过配置为 pull_policy: never 的服务,2) 忽略那些已有镜像且为 pull_policy: missing 的服务。修复了 #3660
  • 从资源构建项目时出错不再被忽略,以防止 down 恐慌。已修复 #9383
  • 强制项目名称为小写。修复了 #9378
  • 新增了对构建时密钥的支持。修复了 #6358
  • compose-go 改为允许在无法使用挂载时,构建可供引擎 bind API 使用的卷字符串。修复了 #9380
  • 提供了 checksums.txt 文件,并添加了 --binary 以允许在不同操作系统中进行验证。修复了 #9388
  • 已添加更改,以便检查本地拉取的镜像 ID 并将其持久化为 com.docker.compose.image。修复了 #9357
  • 修复了关于 IPAM 网关设置的问题。修复了 #9330
  • 为 Docker Compose Binaries添加了对 ppc64le 架构的支持。
  • 修复了 --no-TTY 文档中的搜索/替换拼写错误。

如需查看完整的变更日志或更多信息,请访问 Compose 仓库 2.5.0 发布页面

2.4.1

2022-04-04

错误修复和功能增强

  • 在带有此标志运行容器时,将 --rm flag 值原样传递给 Docker CLI。修复了 #9314
  • 在从 docker compose up 命令构建镜像时,已将 SSH 配置添加到构建选项中。修复了 #9338
  • 为容器检查添加了检测是否需要 TTY 的功能。现在,运行指定了 tty:true 的服务会显示控制台输出。修复了 #9288

如需查看完整的变更日志或更多信息,请访问 Compose 仓库 2.4.1 发布页面

2.4.0

2022-04-1

更新

  • 依赖项更新:将 buildx 升级至 v0.8.1,以修复在处理构建上下文扫描错误时可能出现的恐慌(panic)问题。

错误修复和功能增强

  • 将交互式标志 '-i' 从 Compose CLI 传递给 Docker 以运行 exec 命令。修复了 #9315
  • Compose 命令现在会考虑环境变量 COMPOSE_PROJECT_NAME 的值。已修复 #9316
  • 修复了 compose down 命令的问题:当在未启动任何服务或没有资源可删除的上下文中执行该命令时,此前会返回错误。该错误是由于命令尝试删除一个不存在的默认网络所致。已修复 #9333
  • 在构建部分引入了对 cache_fromcache_tono_cachepull 属性的支持。这些属性允许强制从源代码进行完整重建,并与注册表检查所使用的镜像。这些变更为将来为 compose build(或等效)命令提供 --no-cache--pull 选项奠定了基础。
  • 为来自 CLI 和 Compose 文件的 build 命令引入了对 --ssh 标志的支持。修复了 #7025
  • 修复了 --ssh 标志描述中的拼写错误。相关于 #7025
  • 将 Kubernetes 依赖固定为与 buildx 中相同的版本。
  • 已将交互式标志从 Compose CLI 传递到 Docker,以运行 exec 命令。
  • 修复了在并行运行启动 - 停止端到端测试时出现的竞态条件。
  • 已移除关于过时警告的代码。
  • 供应商:github.com/containerd/containerd v1.6.2。包含对 CVE-2022-24769 的修复(不影响我们的代码库)。

如需查看完整的变更日志或更多信息,请访问 Compose 仓库 2.4.0 发布页面

2.3.4

2022-03-25

  • 引入了更改,以使用 docker/cli 中的 RunExec 和 RunStart 来处理所有交互式/tty/*终端逻辑。

已移除

  • 移除一个没有候选者的容器现在会生成警告而不是错误。修复了 #9255
  • 从 run 和 exec 命令的 -i 和 -t 选项中移除了“已弃用”的提及。这些选项默认启用且正在使用中。修复了 #9229
  • 从 --filter 标志中移除了“已弃用”的提及,以与其他命令保持一致。
  • 移除了运行 'docker compose kill' 时需要获取原始 compose.yaml 文件的要求。

更新

  • 依赖项更新:将 github.com/spf13/cobra 从 1.3.0 升级至 1.4.0。Cobra 库不再需要 Viper 及其所有间接依赖项。 查看 Cobra 的发布页面
  • 依赖项更新:将 buildx 从 v0.7.1 升级至 v0.8.0。

错误修复和功能增强

  • 恢复了 'compose up -d' 的行为,即使用刷新后的内容重新创建 Compose 文件镜像的容器。修复了 #9259
  • Docker Compose 的 --status、--filter 和 --format 标志文档更新。
  • docker compose down -v 现在不会移除外部卷和网络,这符合该选项的预期和文档化行为。每当指定项目时,现在也会用于强制仅移除 compose.yaml 文件中列出的资源。 修复了 #9172#9145
  • 更改了 Compose API 参考文档的自动化流程,以识别代码与文档之间的差异。

如需查看完整的变更日志或更多信息,请访问 Compose 仓库 2.3.4 发布页面

其他版本

(2022-03-8 to 2022-04-14)

对于 1.29.2 之后且 2.3.4 之前的版本,请查看 Compose 仓库发布页面

1.29.2

(2021-05-10)

杂项

  • 移除了在 up 命令中使用 docker-compose 的提示。

  • requirements-indirect.txt 中将 py 提升至 1.10.0

1.29.1

(2021-04-13)

缺陷

  • 修复了 Windows 构建中无效的处理程序警告。

  • 修复了配置哈希,以便在 IPC 模式更新时触发容器重新创建。

  • 已为 placement.max_replicas_per_node 修复转换映射。

  • 移除了构建时多余的扫描建议。

1.29.0

(2021-04-06)

功能

  • 已为 docker-compose config 添加配置文件过滤器。

  • 添加了一个 depends_on 条件,以等待服务成功完成。

杂项

  • 在构建时添加了镜像扫描消息。

  • 已更新 --no-ansi 的警告消息,提及 --ansi never 作为替代方案。

  • 将 docker-py 升级至 5.0.0 版本。

  • 已将 PyYAML 升级至 5.4.1 版本。

  • 将 python-dotenv 升级至 0.17.0 版本。

1.28.6

(2021-03-23)

错误修复

  • 已使 --env-file 相对于当前工作目录。通过 --env-file 设置的环境文件路径现在相对于当前工作目录,并覆盖位于项目目录中的默认 .env 文件。

  • 通过更新 Compose 架构,修复了缺失的服务属性 storage_opt

  • 修复了构建 extra_hosts 的列表格式。

  • 已移除 exec 上的额外错误消息。

杂项

  • 已将 compose.ymlcompose.yaml 添加到默认文件名列表中。

1.28.5

(2021-02-26)

缺陷

  • 修复了通过调用 SSH 客户端时出现的 OpenSSL 版本不匹配错误(通过升级至包含该修复的 docker-py 4.4.4 版本)。

  • 为原生构建器添加了缺失的构建标志:platformisolationextra_hosts

  • 移除了原生构建的信息消息。

  • 修复了当服务日志驱动程序设置为 'none' 时的日志获取错误。

1.28.4

(2021-02-18)

错误修复

  • 通过将 docker-py 升级至 4.4.3 版本,修复了 SSH 端口解析问题。

杂项

  • 将 Python 升级至 3.7.10。

1.28.3

(2021-02-17)

错误修复

  • 修复了当 SSH 主机名包含前导 's' 或 'h' 时的解析问题,并移除了会隐藏错误的静默选项(通过升级 docker-py 至 4.4.2 版本)。

  • 修复了 --no-log-prefix 选项的键错误。

  • 修复了服务配置文件的 CLI 环境变量名称错误:COMPOSE_PROFILES 应为 COMPOSE_PROFILE

  • 修复了 fish 补全功能。

杂项

  • 将 cryptography 升级至 3.3.2 版本。

  • 已移除日志驱动程序过滤器。

如需查看此版本中修复的 PR 和问题列表,请参阅 Compose 1.28.3

1.28.2

(2021-01-26)

错误修复

  • 回退到用于 Linux 静态构建的 Python 3.7 版本升级

  • docker-compose logs|up --no-log-prefix 添加 bash 补全功能

杂项

  • CI 设置更新

1.28.0

(2021-01-20)

功能

  • 通过设备请求添加了对 NVIDIA GPU 的支持。

  • 添加了对服务配置文件的支持。

  • 通过将命令委托给本地 SSH 客户端,更改了连接到 Docker CLI 的 SSH 方式。设置 COMPOSE_PARAMIKO_SSH=1 环境变量可启用旧行为。

  • 添加了禁用日志前缀的标志。

  • 添加了用于控制 ANSI 输出的标志。

  • Docker Compose 现在在构建镜像时使用原生 Docker CLI 的 build 命令。设置 COMPOSE_DOCKER_CLI_BUILD=0 环境变量可禁用此功能。

错误修复

  • 默认已 parallel_pull=True 个。

  • 已恢复非 Swarm 模式下配置的警告。

  • 在定义 project_dir 时考虑了 --file

  • 修复了 compose up 上的服务附加错误。

杂项

  • 已添加使用指标。

  • 已根据 COMPOSE 规范同步架构。

  • 改进了缺失必需环境变量时的失败报告。

  • 已将 attrs 升级至 20.3.0。

  • 已将 more_itertools 升级至 8.6.0。

  • 已将 cryptograhy 升级至 3.2.1。

  • 已将 cffi 升级至 1.14.4。

  • 已将 virtualenv 升级至 20.2.2。

  • 已将 bcrypt 升级至 3.2.0。

  • 将 GitPython 升级至 3.1.11 版本。

  • 已将 docker-py 升级至 4.4.1。

  • 将 Python 升级至 3.9 版本。

  • Linux:已将 Debian 基础镜像从 stretch 升级至 buster(Python 3.9 所需)。

  • macOS:将 OpenSSL 从 1.1.1g 升级至 1.1.1h,将 Python 从 3.7.7 升级至 3.9.0。

  • 将 PyInstaller 升级至 4.1 版本。

  • 放宽了对基础镜像的限制,允许使用最新的小版本。

  • 已更新 README 文件。

1.27.4

(2020-09-24)

错误修复

  • 移除了绑定挂载的路径检查。

  • 修复了端口渲染,以便为非 v1 版本输出长格式语法。

  • 已为 Docker 套接字地址添加协议。

1.27.3

(2020-09-16)

错误修复

  • 已合并 max_replicas_per_nodedocker-compose config

  • docker-compose config 上修复了 depends_on 序列化问题。

  • 当某些容器未在 docker-compose up 上运行时,已修复扩缩容问题。

  • local 驱动程序启用了 driver_opts.device 的相对路径。

  • 允许用于 cpus 字段的字符串。

1.27.2

(2020-09-10)

错误修复

  • 修复了 docker-compose run 容器附加的错误。

1.27.1

(2020-09-10)

错误修复

  • 当指定 service.scale 时,已修复 docker-compose run

  • 允许将 driver 属性用于外部网络,作为解决 Swarm 网络传播问题的临时变通方案。

  • 将新的内部架构版本固定为 3.9 作为默认值。

  • 保留了在 Compose 文件中配置的版本号。

1.27.0

(2020-09-07)

功能

  • 合并了 2.x 和 3.x Compose 格式,并与 COMPOSE_SPEC 模式保持一致。

  • 已为 ipc 实现服务模式。

  • 在容器模式下传递了 COMPOSE_PROJECT_NAME 个环境变量。

  • 使 run 的行为与 up 保持一致。

  • 当设置了 COMPOSE_DOCKER_CLI_BUILD 环境变量时,在 docker-compose run 上使用了 docker build

  • 使用 docker-py 默认 API 版本进行引擎查询 (auto)。

  • 在构建时解析了 network_mode

错误修复

  • 当不需要构建时,忽略构建上下文路径的验证。

  • 通过升级 docker-py 至 4.3.1 版本,修复了浮点数到字节的转换问题。

  • 修复了设置部署部分时的缩放错误。

  • 已修复 docker-pysetup.py 中的小版本升级问题。

  • 修复了实验性构建失败检测问题。

  • 修复了向 Docker CLI 的上下文传播问题。

杂项

  • 已升级 docker-py 至 4.3.1。

  • 已将 tox 升级至 3.19.0。

  • 已将 virtualenv 提升至 20.0.30。

  • 添加了用于文档同步的脚本。

1.26.2

(2020-07-02)

错误修复

  • 安装 pip 时强制将 docker-py 4.2.2 作为最低版本。

1.26.1

(2020-06-30)

功能

  • 已将 docker-py 从 4.2.1 升级至 4.2.2。

错误修复

  • 在安装 pip 时,强制将 docker-py 4.2.1 作为最低版本。

  • 修复了非 Docker 端点的上下文加载问题。

1.26.0

(2020-06-03)

功能

  • 已添加 docker context 支持。

  • 已将缺失的测试依赖项 ddt 添加到 setup.py

  • 已为附加到依赖项的命令 up 添加了 --attach-dependencies

  • 允许使用环境变量 COMPOSE_COMPATIBILITY 的兼容性选项。

  • Pytest 升级至 5.3.4,并添加与新版本的重构兼容性。

  • 已升级 OpenSSL,从 1.1.1f 到 1.1.1g。

  • certifi 从 2019.11.28 升级到 2020.4.5.1。

  • docker-py 从 4.2.0 升级至 4.2.1。

错误修复

  • 来自 env_files 的正确转义值。

  • 已同步 compose-schemas 与上游 (docker/cli)。

  • 在 exec 命令中移除了 None 个条目。

  • 已添加 distribution 个软件包以获取分发信息。

  • 已添加 python-dotenv 到委托 .env 的文件处理中。

  • 当通过管道连接到另一个命令时,停止根据终端宽度调整输出。

  • version 属性格式错误时,显示了一条错误消息。

  • 当远程为 DOCKER_HOST 时,修复了 HTTPS 连接问题。

1.25.5

(2020-04-10)

功能

  • 将 OpenSSL 从 1.1.1d 升级到 1.1.1f。

  • 已添加 Compose 版本 3.8。

    • 将服务规模限制为由字段 deploy.placement.max_replicas_per_node 指定的大小。

1.25.4

(2020-02-03)

错误修复

  • 修复了 CI 脚本,强制将最低 MacOS 版本设置为 10.11。

  • 修复了 docker-compose exec 在处理环境文件中无值的键时的问题。

1.25.3

(2020-01-23)

错误修复

  • 修复了 CI 脚本,以强制使用 Python3 进行编译。

  • 在发布页面上更新了Binaries的 sha256。

1.25.2

(2020-01-20)

新功能

  • Docker Compose 现在允许使用 COMPOSE_COMPATIBILITY 环境变量作为兼容性选项。

错误修复

  • 修复了当 version 字段设置为无效值时导致 Docker Compose 崩溃的问题。现在,当版本字段中使用无效值时,Docker Compose 会显示错误消息。

  • 修复了 Docker Compose 在非终端环境下运行命令时导致消息渲染不正确的问题。

1.25.1

(2020-01-06)

错误修复

  • 在使用 APIError 解释创建并启动容器之前,已将其解码为 Unicode。

  • Docker Compose 会丢弃值为 Nonecom.docker.compose.filepaths 个标签。这通常发生在标签源自标准输入时。

  • 已将 OS X Binaries添加为目录,以解决由 macOS Catalina 二进制扫描引起的启动缓慢问题。

  • 在运行 script/run/run.sh 时,在容器模式下传递了环境变量 HOME

  • Docker Compose 现在会报告那些无法拉取但需要构建的镜像。

1.25.0

(2019-11-18)

新功能

  • 通过将 CLICOLOR 环境变量更改为 0,将 no-colors 设置为 true。

  • 已将工作目录、配置文件和环境文件添加到服务标签中。

  • 已添加 ARM 构建依赖项。

  • 添加了 BuildKit 支持(使用 DOCKER_BUILDKIT=1COMPOSE_DOCKER_CLI_BUILD=1)。

  • 将 Paramiko 升级至 2.6.0 版本。

  • 已添加以下标签:docker-compose:latestdocker-compose:<version>-alpinedocker-compose:<version>-debian

  • 已升级 docker-py 至版本 4.1.0。

  • 增强了对 requests 的支持,最高支持到版本 2.22.0。

  • 已移除 build:cache_from 上的空标签。

  • Dockerfile 增强功能,支持为 Alpine Linux 生成 libmusl Binaries。

  • 仅拉取无法构建的镜像。

  • scale 属性现在接受 0 作为值。

  • docker-compose build 命令添加了 --quiet 选项和 --no-rm 选项。

  • docker-compose config 命令添加了 --no-interpolate 选项。

  • 将 MacOS 构建的 OpenSSL 版本从 1.1.0 提升至 1.1.1c

  • 添加了对 docker-compose.yml 文件的 credential_spec 配置选项的支持。

  • 无需拉取镜像即可解析摘要。

  • 已将 pyyaml 升级至版本 4.2b1

  • 对于 down 次尝试删除不存在的镜像的情况,已将严重性级别降低为 warning

  • 在可能的情况下,强制要求项目事件使用改进的 API 字段。

  • 已为现代 pypi/setuptools 更新了 setup.py,并移除了 pandoc 依赖项。

  • 已移除不再需要的 Dockerfile.armhf

错误修复

  • 使容器服务颜色具有确定性,包括移除红色。

  • 修复了非 ASCII 字符错误(仅限 Python 2)。

  • 将镜像大小格式更改为十进制,以与 Docker CLI 保持一致。

  • tty 通过 Python POSIX 支持获取的大小。

  • 修复了同一文件 extends 的优化问题。

  • 已修复 stdin_open

  • 修复了在使用 up --no-start 选项时遇到 --remove-orphans 被忽略的问题。

  • 已修复 docker-compose ps --all 条命令。

  • 修复了 depends_on 依赖重建行为。

  • 修复了 docker-compose build --memory 命令的 bash 自动补全功能。

  • 修复了在执行 docker-compose exec 命令时出现的误导性环境变量警告。

  • 修复了 parallel_execute_watch function 中的失败检查。

  • 修复了拉取镜像后发生的竞态条件问题。

  • 修复了重复挂载点的错误(现在会显示配置错误消息)。

  • 修复了 networks 部分的合并问题。

  • Compose 容器默认始终连接到 stdin

  • 修复了当容器不可用时,docker-compose start 命令上失败服务的展示问题。

1.24.1

(2019-06-24)

此版本包含一些小的改进和错误修复。

1.24.0

(2019-03-28)

功能

  • 已支持使用 ssh 协议连接到 Docker Engine。

  • docker-compose ps 添加了 --all 标志,以便在命令输出中包含已停止的一次性容器。

  • ps --all|-a 添加了 bash 自动补全功能。

  • 添加了对 credential_spec 的支持。

  • bashzsh 补全中,已将 --parallel 添加到 docker build 的选项中。

错误修复

  • 修复了一个缺陷:当尝试从私有仓库拉取镜像时,某些有效的凭据助手未被 Compose 正确处理。

  • 修复了一个问题,该问题导致在创建容器之前输出的 docker-compose start 具有误导性。

  • Compose 将不再接受从环境文件中源起的变量名中包含空格。 这与 Docker CLI 的行为一致。

  • Compose 现在将在服务尝试于 volumes 部分声明重复的挂载点时报配置错误。

  • 修复了 Compose 容器化版本中的一个问题,该问题导致用户在通过 runexec 启动的交互式会话中无法写入标准输入(stdin)。

  • run 启动的一次性容器不再继承服务的重启策略, 而是设置为永不重启。

  • 修复了一个导致某些容器事件未出现在docker-compose events命令输出中的问题。

  • 缺失的镜像将不再阻止 docker-compose down 命令的执行。现在会改为显示警告信息。

  • 为 macOS CI 强制使用 virtualenv 版本。

  • 修复了当网络配置为 None 时 Compose 文件的合并问题。

  • 通过启用 pyinstaller 中的 bootloader_ignore_signals,已修复 CTRL+C 个问题。

  • 已将 docker-py 版本升级至 3.7.2,以修复 SSH 和代理配置问题。

  • 修复了发布脚本以及发布文档中的一些拼写错误。

1.23.2

(2018-11-28)

错误修复

  • 回退了 1.23.0 版本中的一项更改,该更改会在由 docker-compose up 创建的容器名称后附加随机字符串,从而导致寻址问题。

    注意

    docker-compose run 创建的容器将继续使用随机生成的名称,以避免在并行运行期间发生冲突。

  • 修复了在 Windows 上尝试构建时,某些 dockerfile 路径会意外失败的问题。

  • 修复了在 Windows 上构建上下文 URL 会导致构建失败的缺陷。

  • 修复了一个导致对于某些其他情况下可接受的--host参数值,runexec命令失败的错误。

  • 修复了服务定义中 storage_optisolation 键的覆盖未正确应用的问题。

  • 修复了一个缺陷,该缺陷会导致某些无效的 Compose 文件在验证过程中抛出未捕获的异常。

1.23.1

(2018-11-01)

错误修复

  • 修复了一个缺陷,该缺陷导致在使用早于 1.23.0 版本的 Compose 创建的容器时出现意外崩溃。

  • 修复了--project-directory标志的行为因使用的子命令不同而有所差异的问题。

1.23.0

(2018-10-30)

重要提示

在此版本中,由 Compose 创建的容器的默认命名方案已从 <project>_<service>_<index> 更改为 <project>_<service>_<index>_<slug>,其中 <slug> 是一个随机生成的十六进制字符串。请在升级之前,确保相应地更新依赖旧命名方案的脚本。

功能

  • 崩溃后重启的容器日志现在将显示在 uplogs 命令的输出中。

  • docker-compose config 命令添加了 --hash 选项,允许用户打印每个服务配置的哈希字符串,以方便滚动更新。

  • docker-compose build 命令添加了 --parallel 标志,允许 Compose 同时构建最多 5 个镜像。

  • 现在,pull 命令的输出即使在并行拉取多个镜像时,也会报告状态/进度。

  • 对于具有多个名称的镜像,Compose 现在将尝试在 images 命令的输出中匹配服务配置中存在的那个名称。

错误修复

  • 修复了同一服务的并行 run 命令因名称冲突而失败的问题。

  • 修复了 Windows 客户端上路径长度超过 260 个字符会导致 docker-compose build 失败的问题。

  • 修复了一个在 Windows 版 Docker Desktop 中尝试挂载 /var/run/docker.sock 时会导致失败的错误。

  • --project-directory 选项现在由 Compose 用于确定查找 .env 文件的位置。

  • docker-compose build 在尝试使用 gcloud 凭据助手 提供的凭据拉取镜像时不再失败。

  • 修复了 --exit-code-from 选项在 docker-compose up 中的问题,使其即使在被监控的容器并非退出原因时,也能始终报告实际的退出代码。

  • 修复了一个问题,该问题在某些情况下会阻止重新创建服务:当卷被映射到与该镜像的 Dockerfile 中声明的卷相同的挂载点时。

  • 修复了一个导致多网络哈希配置不一致的错误,该错误曾导致部分服务被不必要地重启。

  • 修复了一个会导致变量替换失败的错误,该错误发生在服务名称包含一个或多个点字符时。

  • 修复了在使用容器化版本的 Compose 时的管道处理问题。

  • 修复了一个导致 external: false 在 Compose 文件中的条目在 docker-compose config 的输出中被错误打印为 external: true 的缺陷。

  • 修复了一个问题:在未定义镜像键的服务上执行 docker-compose pull 命令会导致 Compose 崩溃。

  • 卷和绑定现在按照它们在服务定义中声明的顺序进行挂载。

杂项

  • zsh 补全脚本已更新,新增了选项,并且不再在需要服务名称的位置建议容器名称。

1.22.0

(2018-07-17)

新功能

Compose 格式版本 3.7

  • 引入了 docker-compose.yml 规范的 3.7 版本。 此版本需要 Docker Engine 18.06.0 或更高版本。

  • 在部署配置中添加了对 rollback_config 的支持

  • 在服务配置中添加了对 init 参数的支持

  • 新增了对服务、网络、卷、密钥和配置配置中扩展字段的支持

Compose 格式版本 2.4

  • 在服务、网络和卷配置中增加了对扩展字段的支持

错误修复

  • 修复了一个当设置为 DOCKER_DEFAULT_PLATFORM 时,阻止使用某些 Compose 文件进行部署的错误。

  • Compose 将不再尝试创建以无效起始字符开头的容器或卷。

  • 修复了多个阻止 Compose 命令正常运行的缺陷,这些缺陷影响由旧版本 Compose 创建的容器。

  • 修复了当源文件包含可附加网络时,启用 --compatibility-mode 标志后输出 docker-compose config 的问题。

  • 修复了一个阻止 gcloud 凭据存储在 UNIX 上与 Compose Binaries一起使用时正常工作的错误。

  • 修复了在 Windows 上尝试通过非 HTTPS TCP 连接进行操作时导致连接错误的缺陷。

  • 修复了一个导致在 Windows 上构建失败的错误,该错误发生在 Dockerfile 位于构建上下文的子目录中时。

  • 修复了阻止在 Windows 上正确解析采用 UTF-8 BOM 编码的 Compose 文件的问题。

  • 修复了在使用 docker-compose build 时,.dockerignore 文件中处理双通配符 (**) 模式的问题。

  • 修复了一个导致旧版 .dockercfg 文件中的 auth 值被忽略的错误

  • docker-compose build 将不再尝试创建以无效字符开头的镜像名称

1.21.2

(2018-05-03)

错误修复

  • 修复了一个导致 IPAM 配置中的 ip_range 属性无法通过验证的错误。

1.21.1

(2018-04-27)

错误修复

  • 在 1.21.0 版本中,我们引入了对项目名称进行清理以用于内部资源命名的变更。这导致在操作因该变更而名称发生变化的已部署现有应用程序时出现问题。 本次发布能够正确检测使用“旧版”命名约定的资源。

  • 修复了一个问题:当使用绝对路径指定上下文中的 Dockerfile 时,即使路径有效也会失败。

  • 修复了一个错误,该错误会导致 IPAM 选项更改被误判,从而阻止重新部署。

  • v2 文件的验证现在会正确检查 IPAM 配置的结构。

  • 改进了 Windows 上凭证存储的支持,以包含使用.exe以外扩展名的Binaries。有效扩展名列表由PATHEXT环境变量的内容决定。

  • 修复了一个缺陷,该缺陷导致 Compose 在处理某些 v3.2 文件时会生成包含重复元素的无效绑定,从而在部署期间触发引擎级错误。

1.21.0

(2018-04-11)

新功能

Compose 文件版本 2.4

  • 引入了 docker-compose.yml 规范的 2.4 版本。 此版本需要 Docker Engine 17.12.0 或更高版本。

  • 在 service 定义中添加了对 platform 参数的支持。 如果提供了该参数,它在为 service 执行构建时也会被使用。

Compose 文件版本 2.2 及以上

  • 在 service definitions(service 定义)中增加了对 cpu_rt_periodcpu_rt_runtime 参数的支持(仅限 2.x 版本)。

Compose 文件版本 2.1 及以上

  • 在服务定义中添加了对 cpu_period 参数的支持(仅限 2.x 版本)。

  • 在服务构建配置中添加了对 isolation 参数的支持。 此外,如果未定义 build.isolation 参数,则服务定义中的 isolation 参数也将用于构建。(仅限 2.x 版本)

所有格式

  • docker-compose exec 中添加了对 --workdir 标志的支持。

  • docker-compose build 中添加了对 --compress 标志的支持。

  • docker-compose pull 现在默认并行执行。您可以使用 --no-parallel 标志选择退出。--parallel 标志现已弃用,并将在未来版本中移除。

  • 项目名称中的连字符和下划线不再被移除。

  • docker-compose build 现在支持从构建上下文外部使用 Dockerfile。

错误修复

  • Compose 现在会检查卷的配置是否与远程卷匹配,如果检测到不匹配则会报错。

  • 修复了一个导致 Compose 在尝试并行创建多个一次性容器时抛出意外错误的缺陷。

  • 修复了在使用 docker-machine configexecrun 命令生成 TLS 标志时的参数解析错误。

  • 修复了一个变量替换在使用空默认值(例如 ${VAR:-})时会打印错误警告的缺陷。

  • 当 Compose 文件的编码与系统编码不匹配时,提升了容错能力。建议用户尽可能使用 UTF-8 编码。

  • 修复了一个缺陷:在 Swarm 中,外部覆盖网络会被 Compose 错误地识别为不存在,从而中断原本有效的操作。

1.20.0

(2018-03-20)

新功能

Compose 文件版本 3.6

  • 引入了 docker-compose.yml 规范的 3.6 版本。 此版本必须与 Docker Engine 18.02.0 或更高版本一起使用。

  • 在卷映射中添加了对 tmpfs.size 属性的支持

Compose 文件版本 3.2 及以上

  • 现在可以在 docker-compose build 中不指定服务的情况下使用 --build-arg 选项

Compose 文件版本 2.3

  • 在服务定义中添加了对 device_cgroup_rules 的支持

  • 在长格式卷映射中添加了对 tmpfs.size 属性的支持

  • 现在可以在 docker-compose build 中不指定服务的情况下使用 --build-arg 选项

所有格式

  • 为顶层 docker-compose 命令添加了 --log-level 选项。 接受的值为 debuginfowarningerrorcritical。 默认日志级别为 info

  • docker-compose run 现在允许用户取消设置容器的入口点(entrypoint)

  • 现在在 ~/.docker/config.json 文件中找到的代理配置会填充由 Compose 创建的容器的环境变量和构建参数。

  • docker-compose run 添加了 --use-aliases 标志,表示应使用服务配置中声明的网络别名来运行容器。

  • 已为 docker-compose pull 添加了 --include-deps 标志

  • docker-compose run 现在在接收到 SIGHUP 时会终止并移除运行中的容器

  • docker-compose ps 现在显示容器的健康状态(如果可用)

  • execrunup 命令添加了长格式 --detach 选项

错误修复

  • 修复了 .dockerignore 的处理问题,特别是关于绝对路径和最后一行优先级规则的问题。

  • 修复了在使用 Docker For Mac 时,Compose 在连接引擎时会进行昂贵 DNS 查找的问题。

  • 修复了 1.19.0 版本中引入的一个缺陷,该缺陷导致 Compose 未遵循默认证书路径。

  • 修复了一个缺陷:当构建上下文的一部分包含符号链接时,Compose 会错误地检查该符号链接的目标是否可访问。

  • 修复了一个在 Windows 上,当 .dockerignore 个包含空白行的文件导致 Compose 报错的错误。

  • 修复了一个错误,该错误导致 --tls*--host 选项无法在交互式 runexec 命令中被正确遵循。

  • security_opt 配置中的 seccomp:<filepath> 条目现在能正确地将文件内容发送到引擎。

  • 针对 updown 操作的 ANSI 输出不应再影响错误的行

  • 改进了对非 Unicode 区域设置的支持

  • 修复了当用户主目录名称包含非 ASCII 字符时在 Windows 上发生的崩溃问题

  • 修复了在构建过程中因构建上下文中的文件具有负的 mtime 值而引发的错误。

  • 修复了流式构建进度时的编码错误

1.19.0

(2018-02-07)

重大变更

  • 在 UNIX 平台上,交互式 runexec 命令现在默认要求客户端安装 docker CLI。若要恢复之前的行为,用户可以设置 COMPOSE_INTERACTIVE_NO_CLI 环境变量。

新功能

Compose 文件版本 3.x

  • config 命令的输出现在应以更准确的方式合并来自多个 Compose 文件的 deploy 选项。

Compose 文件版本 2.3

  • 在服务定义中添加了对 runtime 选项的支持

Compose 文件版本 2.1 及以上

  • 添加了对 ${VAR:?err}${VAR?err} 变量插值语法的支持, 用于表示必需变量

Compose 文件版本 2.x

  • 向服务网络映射添加了 priority 个键,允许用户定义指定服务连接到每个网络的顺序。

所有格式

  • up 命令添加了 --renew-anon-volumes(简写为 -V), 防止 Compose 从之前的容器中恢复匿名卷的数据。

  • 增加了并行操作数量的限制,以防止服务器资源意外耗尽。默认值为 64,可通过 COMPOSE_PARALLEL_LIMIT 环境变量进行配置。

  • up 命令添加了 --always-recreate-deps 标志,以强制重新创建依赖服务及其依赖所有者。

  • 已添加 COMPOSE_IGNORE_ORPHANS 个环境变量,以跳过孤立容器检测并抑制警告。

  • 添加了 COMPOSE_FORCE_WINDOWS_HOST 个环境变量,以强制 Compose 将卷定义解析为仿佛 Docker 主机是 Windows 系统,即使 Compose 当前正在 UNIX 上运行。

  • Bash 补全功能现在应能更好地区分正在运行、已停止和已暂停的服务。

错误修复

  • 修复了一个缺陷,该缺陷会导致当构建上下文包含不可读文件或 FIFO 对象时,build 命令报告连接错误。 现在将适当处理这些文件类型。

  • 修复了围绕交互式 run/exec 会话的各种问题。

  • 修复了一个同时使用环境变量和 CLI 标志设置 TLS 选项时,会导致部分配置被忽略的错误。

  • 修复了一个 bug,该 bug 导致 Compose 忽略了 DOCKER_TLS_VERIFY 环境变量。

  • 修复了 up 中的 -d--timeout 标志被错误标记为不兼容的问题。

  • 修复了一个缺陷:当与先前容器关联的镜像已被删除时,服务的重建操作会失败。

  • 修复了一个缺陷:当尝试重建关联服务时,更新挂载目标会导致 Compose 出错。

  • 修复了一个错误:在使用 3.2 版本的 Compose 文件中,通过扩展语法声明的 tmpfs 个卷会被错误地创建为匿名卷。

  • 修复了一个错误,该错误会导致类型转换错误打印堆栈跟踪,而不是优雅地退出。

  • 修复了与 Unicode 处理相关的一些错误

  • 如果依赖服务的配置未发生变化,它们将不再随依赖所有者一起被重新创建。

  • 改进了对 Compose 文件中 labels 字段的验证。包含标量类型(数字、布尔值)的标签值现在会自动转换为字符串。

1.18.0

(2017-12-18)

新功能

Compose 文件版本 3.5

  • 引入了 docker-compose.yml 规范的 3.5 版本。 此版本需要 Docker Engine 17.06.0 或更高版本。

  • 在构建配置中添加了对 shm_size 参数的支持

  • 在服务定义中添加了对 isolation 参数的支持

  • 添加了对网络、密钥和配置定义的自定义名称的支持

Compose 文件版本 2.3

  • 在构建配置中增加了对 extra_hosts 的支持

  • 新增了对卷条目 长语法的支持,该语法此前已在 3.2 格式中引入。 使用此语法将创建 挂载点而非卷。

Compose 文件版本 2.1 及以上

  • 在服务定义中添加了对 oom_kill_disable 参数的支持(仅限 2.x 版本)

  • 添加了对网络定义自定义名称的支持(仅限 2.x 版本)

所有格式

  • 从环境中插值的值现在在非字符串字段中使用时将被转换为正确的类型。

  • docker-compose run 中添加了对 --label 的支持

  • docker-compose down 中添加了对 --timeout 的支持

  • docker-compose build 中添加了对 --memory 的支持

  • 现在,在服务定义中设置 stop_grace_period 也会设置容器的 stop_timeout

错误修复

  • 修复了一个问题,该问题导致 Compose 仍根据旧版引擎行为处理服务主机名,从而使得包含点号的主机名被截断。

  • 修复了一个错误,该错误导致 Compose 将端口的 X-Y:Z 语法视为无效。

  • 修复了导致重复消息和输出不优雅的 CLI 日志记录问题

  • 修复了在使用多个 Compose 文件时导致 stop_grace_period 被忽略的问题

  • 修复了一个在使用未标记镜像时导致 docker-compose images 崩溃的错误。

  • 修复了一个问题,该问题会导致有效的 ${VAR:-} 语法使 Compose 报错退出。

  • 修复了一个错误,该错误导致使用 UTF-8 BOM 的 env_file 个条目被错误读取。

  • 修复了一个缺陷:当缺失密钥文件时,系统不再在其位置生成空目录。

  • 修复了 CLI 错误处理器中的字符编码问题

  • 为健康检查中的 test 字段添加了验证

  • 为 IPAM 配置中的 subnet 字段添加了验证功能

  • 在使用服务定义的长语法时,为 volumes 个属性添加了验证功能。

  • CLI 现在明确禁止在 docker-compose up 中同时使用 -d--timeout

1.17.0

(2017-11-01)

新功能

Compose 文件版本 3.4

  • 推出了 docker-compose.yml 规范的 3.4 版本。 此版本需要与 Docker Engine 17.06.0 或更高版本配合使用。

  • 在构建配置中增加了对 cache_fromnetworktarget 选项的支持

  • update_config 部分中添加了对 order 参数的支持

  • 在卷定义中添加了使用 name 参数设置自定义名称的支持。

Compose 文件版本 2.3

  • 在构建配置中添加了对 shm_size 选项的支持

Compose 文件版本 2.x

  • 新增了对扩展字段的支持(x-*)。同样适用于 v3.4 版本的文件。

所有格式

  • up 命令添加了新的 --no-start 选项,允许用户创建所有资源(网络、数据卷、容器),而无需启动服务。 create 命令已弃用,推荐使用此新选项。

错误修复

  • 修复了一个错误,该错误导致 extra_hosts 值会被扩展文件覆盖,而不是进行合并。

  • 修复了一个错误,该错误导致在验证 v3.2 文件时无法在服务卷定义中使用 consistency 字段。

  • 修复了一个会导致崩溃的错误:当期望包含唯一项的配置字段中出现重复项时,系统会崩溃。

  • 修复了一个错误,该错误导致使用不同模式进行挂载覆盖时,会创建重复条目而非覆盖原始条目。

  • 修复了一个缺陷,该缺陷导致声明为列表的构建标签无法被正确解析。

  • 修复了一个缺陷:当文件包含自定义名称的外部卷时,docker-compose config 的输出在某些版本中会无效。

  • 在 Windows 上使用不支持的文件版本发出构建命令时,改进了错误处理。

  • 修复了在并发运行 up 命令时,有时会创建具有相同名称的网络的问题。

1.16.0

(2017-08-31)

新功能

Compose 文件版本 2.3

  • 引入了 docker-compose.yml 规范的 2.3 版本。 此版本需要与 Docker Engine 17.06.0 或更高版本配合使用。

  • 在构建配置中添加了对 target 参数的支持

  • 在健康检查配置中添加了对 start_period 参数的支持

Compose 文件版本 2.x

  • 在服务定义中添加了对 blkio_config 参数的支持

  • 在卷定义中添加了使用 name 参数设置自定义名称的支持(不适用于 2.0 版本)

所有格式

  • 添加了新的 CLI 标志 --no-ansi,用于抑制输出中的 ANSI 控制字符

错误修复

  • 修复了一个嵌套 extends 指令未正确解析的缺陷,该缺陷会导致“文件未找到”错误。

  • 修复了与 .dockerignore 解析相关的几个问题

  • 修复了启用 TTY 的服务日志打印不正确并导致 MemoryError 异常的问题。

  • 修复了一个在 Python 3 上打印应用程序日志时偶尔会被 UnicodeEncodeError 异常中断的错误。

  • docker-compose config 的输出中的 $ 字符现在已正确转义

  • 修复了一个运行 docker-compose top 时有时会因未捕获的异常而失败的错误。

  • 修复了一个错误,当使用 --parallel 标志时,docker-compose pull 在失败时会返回 0 退出码。

  • 修复了 deploy.resources 中的密钥未进行验证的问题。

  • 修复了以下问题:docker-compose config 输出中的 logging 选项会被设置为无效值 null

  • 修复了当镜像来自使用显式端口号的私有仓库时,docker-compose images 命令的输出问题。

  • 修复了当端口定义使用 0 作为发布端口的值时,输出为 docker-compose config 的问题。

1.15.0

(2017-07-26)

新功能

Compose 文件版本 2.2

  • 在构建配置中添加了对 network 参数的支持。

Compose 文件版本 2.1 及以上

  • 服务定义中的 pid 选项现在支持 service:<name> 值。

  • 在 service definitions 中添加了对 storage_opt 参数的支持。 此选项不适用于 v3 格式

所有格式

  • 已为 docker-compose pull 添加 --quiet 标志,从而抑制进度输出。

  • 对 CLI 输出的一些改进

错误修复

  • 通过 --volume 标志指定的卷(属于 docker-compose run)现在会补充服务定义中声明的卷,而不再替换它们。

  • 修复了一个在使用多个 Compose 文件时会取消在 Compose 文件中定义的 scale 值的错误。

  • 修复了 credHelpers 文件中的 config.json 条目未被 Compose 识别的问题。

  • 修复了一个在使用多个包含端口声明的 Compose 文件时,会导致 Python 3 环境出现失败的错误。

  • 修复了一个缺陷,该缺陷导致用户环境中存在的某些与代理相关的选项会阻止 Compose 运行。

  • 修复了当原始文件使用 YN 值时,docker-compose config 的输出无效的问题。

  • 修复了之前在 Windows 引擎上创建的堆栈无法执行 up 操作的问题。

1.14.0

(2017-06-19)

新功能

Compose 文件版本 3.3

  • 介绍了 docker-compose.yml 规范的 3.3 版本。 此版本需要与 Docker Engine 17.06.0 或更高版本一起使用。 注意:credential_specconfigs 键仅适用于 Swarm 服务, 并会被 Compose 忽略。

Compose 文件版本 2.2

  • 在服务定义中添加了以下参数:cpu_countcpu_percentcpus

Compose 文件版本 2.1

  • 已添加对构建标签的支持。此功能在 2.2 和 3.3 格式中也可用。

所有格式

  • docker-compose exec 中为 --user 标志添加了简写形式 -u

  • Compose 文件与远程网络之间的标签差异现在将打印警告,而不是阻止重新部署。

错误修复

  • 修复了一个缺陷:当运行 docker-compose run 命令时,服务的依赖项会被重新缩放至其默认规模。

  • 修复了一个错误,该错误导致在使用 docker-compose rm 并带有 --stop 标志时,若提供要移除的服务列表,其行为不正确。

  • 修复了一个在使用多个 Compose 文件时,构建部分中的 cache_from 会被忽略的错误。

  • 修复了一个在使用多个 Compose 文件时,阻止将同一端口绑定到不同 IP 地址的错误。

  • 修复了一个错误,该错误导致如果覆盖文件具有 .yaml 扩展名,Compose 将无法识别它们。

  • 修复了 Windows 引擎中的一个错误,该错误会导致网络被错误地标记为需要重新创建。

  • 修复了一个缺陷,该缺陷导致在某些 Python 3 版本中,声明端口的服务会引发崩溃。

  • 修复了一个问题,该问题导致 docker-compose config 的输出有时会包含无效的端口定义。

1.13.0

(2017-05-02)

重大变更

  • docker-compose up 现在将服务的扩缩容重置为其默认值。 您可以使用新引入的 --scale 选项来指定自定义的扩缩容值。

新功能

Compose 文件版本 2.2

  • 引入了 docker-compose.yml 规范的 2.2 版本。此版本需要与 Docker Engine 1.13.0 或更高版本一起使用。

  • 在服務定義中新增了對 init 的支援。

  • 在 service 定义中添加了对 scale 的支持。配置值可以通过 docker-compose up 中的 --scale 标志进行覆盖。 此文件格式已禁用 scale 命令

Compose 文件版本 2.x

  • 在网络定义的 ipam 部分中添加了对 options 的支持

错误修复

  • 修复了一个通过 -f 选项提供给 compose 的路径无法正确解析的错误。

  • 修复了一个错误,该错误导致端口部分中的 ext_ip::target_port 表示法被错误地标记为无效。

  • 修复了在使用 -d 标志时,exec 命令有时无法将控制权返回给终端的问题。

  • 修复了一个缺陷,该缺陷导致在 v3.2 文件的 config 命令输出中缺少机密信息。

  • 修复了在没有网络连接时 docker-compose 会卡住的问题。

  • 修复了一个问题:当通过 -f 标志传递包含 Unicode 字符的路径时,会导致 Compose 崩溃。

  • 修复了当 Compose 文件包含外部密钥时,docker-compose config 的输出无效的问题。

  • 修复了一个在 Python 3 环境中安装 Compose 时,使用 --exit-code-fromup 会失败的错误。

  • 修复了一个缺陷:当使用 tmpfsvolumes 的组合重新创建容器时,会导致配置状态无效。

1.12.0

(2017-04-04)

新功能

Compose 文件版本 3.2

  • 推出了 docker-compose.yml 规范的 3.2 版本

  • 在服务的 build 部分中添加了对 cache_from 的支持

  • 在服务定义中添加了对新扩展端口语法的支持

  • 新增了对服务定义中扩展卷语法的支持

Compose 文件版本 2.1

  • 在服务定义中添加了对 pids_limit 的支持

Compose 文件版本 2.0 及以上

  • docker-compose config 添加了 --volumes 选项,用于列出该项目声明的命名卷。

  • 在服务定义中添加了对 mem_reservation 的支持(仅限 2.x 版本)

  • 在服务定义中添加了对 dns_opt 的支持(仅限 2.x 版本)

所有格式

  • 新增了一个 docker-compose images 命令,用于列出当前项目容器所使用的镜像。

  • docker-compose rm 添加了 --stop(简写为 -s)选项,该选项会在移除容器之前先停止正在运行的容器。

  • docker-compose config 添加了 --resolve-image-digests 选项,该选项将每个服务的镜像版本固定为永久摘要。

  • docker-compose up 添加了 --exit-code-from SERVICE 选项。启用后,docker-compose 将在任意容器退出时终止,并返回对应指定服务的退出码。

  • docker-compose pull 添加了 --parallel 选项,该选项支持同时拉取多个服务的镜像。

  • docker-compose build 添加了 --build-arg 选项

  • docker-compose run 添加了 --volume <volume_mapping>(简写为 -v)选项,用于声明要挂载的运行时卷。

  • docker-compose 添加了 --project-directory PATH 选项,该选项将影响项目的路径解析。

  • docker-compose up 中使用 --abort-on-container-exit 时,导致中止的容器的退出代码将是 docker-compose up 命令的退出代码。

  • 用户现在可以配置他们想要使用哪个路径分隔符字符,以通过COMPOSE_PATH_SEPARATOR环境变量来分隔COMPOSE_FILE环境值。

  • 在端口映射中增加了对将端口范围映射到单个端口的支持,例如8000-8010:80

错误修复

  • docker-compose run --rm 现在会在执行后移除匿名卷, 与 docker run --rm 的行为保持一致。

  • 修复了一个缺陷:当覆盖文件包含端口列表时,会引发 TypeError 错误。

  • 修复了一个错误,该错误会导致 deploy 键在 docker-compose config 的输出中缺失。

  • 修复了一个在扩展或缩减服务时有时会重用已废弃容器的错误。

  • 修复了一个缺陷:如果项目声明了匿名卷,docker-compose config 的输出将无效。

  • 变量插值现在会在 Compose 文件的 secrets 部分正确发生。

  • secrets 部分现在正确地显示在 docker-compose config 的输出中

  • 修复了一个缺陷,该缺陷导致对先前创建的网络进行的某些网络属性更改无法被检测到。

  • 修复了一个当尝试向已关闭的管道写入时,docker-compose 会导致崩溃的错误。

  • 修复了当与命令行 TLS 标志结合使用时,Compose 无法识别 COMPOSE_TLS_VERSION 值的问题。

1.11.2

(2017-02-17)

错误修复

  • 修复了一个阻止机密配置正确加载的错误

  • 修复了一个当配置文件包含密钥定义时,docker-compose config 命令会失败的错误。

  • 修复了在某些 Linux 发行版上,Compose 会拾取并加载过时版本的 requests 库的问题。

  • 修复了一个问题,该问题会导致在尝试构建服务时,构建文件夹内的套接字类型文件使 docker-compose 崩溃。

  • 修复了递归通配符模式 **.dockerignore 文件中无法被识别的问题。

1.11.1

(2017-02-09)

错误修复

  • 修复了一个导致 Compose 解析器无法识别 3.1 文件格式为有效格式的缺陷。

1.11.0

(2017-02-08)

新功能

Compose 文件版本 3.1

  • 推出了 docker-compose.yml 规范的 3.1 版本。此版本需要 Docker Engine 1.13.0 或更高版本。它引入了对密钥(secrets)的支持。请参阅文档以获取更多信息。

Compose 文件版本 2.0 及以上

  • 引入了 docker-compose top 命令,用于显示由 Compose 管理的不同服务中正在运行的进程。

错误修复

  • 修复了一个缺陷:当扩展定义健康检查字典的服务时,会导致 docker-compose 报错。

  • 修复了在使用多个 Compose 文件时,服务定义中的 pid 条目被忽略的问题。

1.10.1

(2017-02-01)

错误修复

  • 修复了一个问题,该问题会导致在运行 Compose 时,若存在旧版本的 docker-py 包,从而引发意外崩溃。

  • 修复了在使用多个 compose 文件的项目中,健康检查依赖项会丢失的问题。

  • 修复了导致 config 命令输出无效的几个问题。

  • 修复了在向 v3 Compose 文件添加卷标签时会导致错误的问题。

  • 修复了 Windows 上的一个问题,该问题导致包含 Unicode 字符的构建上下文路径被错误编码。

  • 修复了一个缺陷:当容器停止或重启时,Compose 在流式传输日志过程中偶尔会崩溃。

1.10.0

(2017-01-18)

新功能

Compose 文件版本 3.0

  • 推出了 docker-compose.yml 规范的 3.0 版本。此版本需要与 Docker Engine 1.13 或更高版本配合使用,并专为配合 docker stack 命令工作而设计。

Compose 文件版本 2.1 及以上

  • 健康检查配置现在可以使用 healthcheck 参数在服务定义中完成

  • 现在可以设置容器依赖关系,使其在使用 depends_on 声明时等待健康检查通过。请参阅文档以了解更新后的语法。

    注意

    此功能不会移植到版本 3 的 Compose 文件中。

  • 在服务定义中添加了对 sysctls 参数的支持

  • 在服务定义中添加了对 userns_mode 参数的支持

  • Compose 现在会为其创建的网络和卷添加标识标签

Compose 文件版本 2.0 及以上

  • 在服务定义中添加了对 stop_grace_period 选项的支持。

错误修复

  • 彩色输出现在在 Windows 上可以正常工作了。

  • 修复了一个在 Windows 的交互模式下,docker-compose run 无法设置链接别名的错误。

  • 由 Compose 创建的网络现在始终是可附加的 (适用于 Compose 文件 v2.1 及更高版本)。

  • 修复了一个错误,该错误导致 COMPOSE_CONVERT_WINDOWS_PATHS 的假值(0false、空值)被错误地解释为真。

  • 修复了一个在 Windows 上某些 .dockerignore 模式中的正斜杠无法被正确解析的错误。

1.9.0

(2016-11-16)

重大变更

  • 在 Windows 上使用 Docker Toolbox/Machine 运行 Compose 时,卷路径默认不再从 C:\Users 样式转换为 /c/Users 样式。若要重新启用此转换以确保卷正常工作,请设置环境变量 COMPOSE_CONVERT_WINDOWS_PATHS=1。Docker for Windows 用户不受影响,无需设置该变量。

新功能

  • Windows 平台现在支持 docker-compose rundocker-compose exec 的交互模式。要使此功能正常工作,系统中必须存在 docker Binaries。

  • 引入了 docker-compose.yml 规范的 2.1 版本。此版本需要与 Docker Engine 1.12 或更高版本配合使用。

    • docker-compose.yml 中添加了设置卷标签和网络标签的支持。
    • 在服务定义中添加了对 isolation 参数的支持。
    • 在服务网络定义中添加了对链路本地 IP 的支持。
    • 在变量插值中增加了对类 shell 内联默认值的支持。 支持的形式为 ${FOO-default}(如果 FOO 未设置则回退)和 ${FOO:-default}(如果 FOO 未设置或为空则回退)。
  • 在服务定义中添加了对 group_addoom_score_adj 参数的支持。

  • 在网络定义中添加了对 internalenable_ipv6 参数的支持。

  • Compose 现在在 Windows 上默认使用 npipe 协议。

  • 覆盖 logging 配置现在将在 driver 值不冲突的情况下正确合并 options 映射。

错误修复

  • 修复了 Windows 上与 npipe 协议支持相关的几个错误。

  • 修复了在 Windows Server 上使用 Docker 时,Windows 路径被错误转换的问题。

  • 修复了一个 bug,该 bug 导致空 restart 值有时会引发异常。

  • 修复了一个问题,该问题导致包含 Unicode 字符的服务日志有时会引发错误。

  • 修复了一个缺陷:当检索环境变量中的 Unicode 值时,有时会抛出 Unicode 异常。

  • 修复了 Compose 错误地检测到覆盖网络配置不匹配的问题。

1.8.1

(2016-09-22)

错误修复

  • 修复了一个使用凭证存储的用户无法访问其私有镜像的错误。

  • 修复了一个错误,该错误导致使用身份令牌进行身份验证的用户无法访问其私有镜像。

  • 修复了一个缺陷:当 Docker 配置文件中存在 HttpHeaders 条目时,会导致 Compose 在尝试构建镜像时崩溃。

  • 修复了与卷绑定声明中处理 Windows 路径相关的一些错误。

  • 修复了一个缺陷,该缺陷导致 Compose 在尝试读取引擎的流式响应时有时会崩溃。

  • 修复了 Compose 在流式传输容器日志时遇到 API 错误会导致崩溃的问题。

  • 修复了一个问题,该问题导致 Compose 错误地尝试输出由 Engine API 未处理的驱动程序产生的日志。

  • 修复了一个错误,该错误导致来自 docker-machine config 命令的选项无法被 Compose 正确解析。

  • 修复了一个在同时运行大量服务时,连接到 Docker 引擎有时会失败的错误。

  • 修复了运行 bundle 命令时,Compose 有时会打印误导性建议消息的问题。

  • 修复了一个在 Compose 项目初始化阶段无法正确处理连接错误的缺陷。

  • 修复了一个在遇到连接超时会显示误导性错误的缺陷。

1.8.0

(2016-06-14)

重大变更

  • 正如在 1.7.0 版本中所宣布的,docker-compose rm 现在默认会移除由 docker-compose run 创建的容器。

  • 在服务的设置中将 entrypoint 设置为空,会清除镜像上设置的任何默认命令(即用于构建该镜像的 Dockerfile 中的任何 CMD 指令)。这使其与 docker run--entrypoint 标志保持一致。

新功能

  • 添加了 docker-compose bundle,这是一个用于构建捆绑文件的命令, 该文件将由 Docker 1.12 中新的 Docker Stack 命令使用。

  • 添加了 docker-compose push,这是一个将服务镜像推送到注册表的命令。

  • Compose 现在支持通过 COMPOSE_TLS_VERSION 环境变量指定与 Docker Engine 交互时使用的自定义 TLS 版本。

错误修复

  • 修复了一个错误,该错误导致 Compose 在项目根目录为目录时错误地尝试读取 .env

  • docker-compose run -e VAR 现在像 docker run -e VAR 一样,将 VAR 从 shell 传递到容器。

  • 当涉及多个 compose 文件时,改进了针对若干服务子键的配置合并功能。

  • 修复了一个漏洞,该漏洞导致包含 Windows 驱动器的卷映射有时会被错误解析。

  • 修复了 Windows 环境下主机根目录的卷映射会被错误解析的问题。

  • 修复了一个问题:当指定外部网络时,docker-compose config 会输出无效的 Compose 文件。

  • 修复了一个问题,该问题会导致未设置的 buildargs 被赋值为包含 'None' 的字符串,而不是预期的空值。

  • 修复了 Windows 上的是/否提示在接收输入前无法显示的错误。

  • 修复了一个在 Windows 上尝试 docker-compose exec 但未使用 -d 选项时会因堆栈跟踪而退出的错误。目前该操作仍会失败,但将以更优雅的方式处理。

  • 修复了一个错误,该错误导致在 docker-compose up 期间发生的错误会在进程末尾显示不相关的堆栈跟踪。

  • docker-compose createdocker-compose start 在出现问题时会显示更具描述性的错误消息。

1.7.1

(2016-05-04)

错误修复

  • 修复了一个错误,该错误导致 v1 文件输出 docker-compose config 时生成无效的配置文件。

  • 修复了一个 docker-compose config 不会检查链接有效性的错误。

  • 修复了一个问题,该问题导致 docker-compose help 无法按预期输出可用命令和通用选项列表。

  • 修复了在使用 docker-compose logs 按服务进行筛选时,该筛选条件不适用于新创建服务的问题。

  • 修复了一个在使用 Compose 和 Python 3 时,未变更的服务在 up 阶段有时会被重新创建的缺陷。

  • 修复了在 up 阶段遇到的 API 错误未被 Compose 识别为失败状态的问题。

  • 修复了一个在 Windows 以外的平台上,由于未定义的异常名称导致 Compose 抛出 NameError 的错误。

  • 修复了一个错误,该错误导致有时会将错误版本的 docker-py 与 Compose 一起安装。

  • 修复了一个缺陷,其中由 docker-machine config default 输出的主机值不会被 docker-compose 命令行识别为有效选项。

  • 修复了 Compose 在读取 Swarm 集群广播的事件时有时会意外退出的问题。

  • 修正了文档中关于 .env 文件位置的陈述, 该文件确实是从当前目录读取的,而不是在与 Compose 文件相同的位置。

1.7.0

(2016-04-13)

重大变更

  • docker-compose logs 默认不再跟随日志输出。现在它的行为与 docker logs 一致,会在打印完当前日志后退出。请使用 -f 来获取旧的默认行为。

  • 布尔值不再允许作为 Compose 文件中映射的值(针对键 environmentlabelsextra_hosts)。此前这仅是一个警告。布尔值应使用引号括起,使其变为字符串值。

新功能

  • Compose 现在会在其运行目录中查找 .env 文件,并读取其中定义的任何环境变量(前提是这些变量尚未在 shell 环境中设置)。这让您能够轻松地为 Compose 文件中使用的变量,或任何 COMPOSE_*DOCKER_* 变量设置默认值。

  • docker-compose updocker-compose down 添加了 --remove-orphans 标志,以移除那些已从 Compose 文件中删除的服务所对应的容器。

  • docker-compose rm 添加了 --all 标志,以包含由 docker-compose run 创建的容器。这将成为下一版本 Compose 的默认行为。

  • 已添加对所有与 docker 客户端使用的相同 TLS 配置标志的支持:--tls--tlscert--tlskey 等。

  • Compose 文件现在支持 tmpfsshm_size 选项。

  • 已为 docker-compose run 添加了 --workdir 标志

  • docker-compose logs 现在显示在其启动后创建的新容器的日志。

  • COMPOSE_FILE 环境变量现在可以包含多个文件, 由宿主系统的标准路径分隔符分隔(Mac/Linux 上为 :, Windows 上为 ;)。

  • 现在,在使用 ipv4_addressipv6_address 选项将服务连接到网络时,您可以指定一个静态 IP 地址。

  • docker-compose logs 命令添加了 --follow--timestamp--tail 标志。

  • docker-compose updocker-compose start现在将在可能的情况下并行启动容器。

  • docker-compose stop 现在按反向依赖顺序停止容器, 而不是一次性全部停止。

  • docker-compose up 添加了 --build 标志,以强制其构建新镜像。如果未使用该标志而自动构建镜像,现在会显示警告。

  • 添加了 docker-compose exec 命令,用于在运行中的容器内执行进程。

错误修复

  • docker-compose down 现在会移除由 docker-compose run 创建的容器。

  • 当在使用 tty 期间 up 发生超时时,会显示一个更合适的错误提示。

  • 修复了 docker-compose down 中的一个错误,该错误会在某些资源已被移除时导致程序中止。

  • 修复了一个问题,该问题导致网络别名的更改不会触发服务的重新创建。

  • 修复了一个错误:当卷已存在时,仍会打印关于创建新卷的日志消息。

  • 修复了一个中断 up 时并不总能关闭容器的错误。

  • 修复了一个在 v1 Compose 文件格式中扩展服务时,log_optlog_driver 未能正确继承的缺陷。

  • 修复了一个缺陷,该缺陷会导致构建参数的空值引起文件验证失败。

1.6.2

(2016-02-23)

  • 修复了一个连接到启用 TLS 的 Docker Engine 时因证书验证错误而失败的问题。

1.6.1

(2016-02-23)

错误修复

  • 修复了一个缺陷:多次重新创建容器时,新容器启动后未挂载之前的卷。

  • 修复了一个缺陷:此前 Compose 会将未设置的环境变量的值设为空字符串,现在改为仅保留键而不赋值。

  • 当 Compose 需要更高版本的 Docker API 时,提供更清晰的错误消息。

  • 添加一个缺失的配置字段 network.aliases,该字段允许为服务设置网络范围别名。

  • 修复了一个 run 无法启动 depends_on 中列出的服务的错误。

  • 修复了一个在使用 extends 或多个 Compose 文件时,networksnetwork_mode 未被合并的错误。

  • 修复了服务别名的一个错误,此前短容器 ID 别名仅包含 10 个字符,现在已恢复为之前版本使用的 12 个字符。

  • 在创建新的命名卷时添加了一条缺失的日志消息。

  • 修复了一个在使用 extends 或多个 Compose 文件时,build.args 未被合并的错误。

  • 修复了当使用空值或不正确的类型而非映射时,配置验证中存在的一些错误。

  • 修复了一个错误:当 build 部分缺少 context 时,原本会显示堆栈跟踪信息,现在改为显示有用的验证消息。

  • 通过仅在服务使用匿名容器卷时将容器亲和性设置到该服务容器的上一个实例,提升了与 Swarm 的兼容性。此前,亲和性总是设置在所有容器上。

  • 修复了某些 driver_opts 的验证问题,该问题在使用数字而非字符串时会引发错误。

  • 对 Compose 容器安装选项所使用的 run.sh 脚本进行了一些改进。

  • 修复了一个与 up --abort-on-container-exit 相关的错误,该错误会导致 Compose 退出,但不会停止其他容器。

  • 修正了当布尔值用作映射中的值时打印的警告消息。

1.6.0

(2016-01-15)

主要功能

  • Compose 1.6 为 docker-compose.yml 引入了一种新格式,允许您在 Compose 文件中定义网络和数据卷,以及服务。它还对某些配置选项的结构进行了一些更改。

    您无需使用它 - 您现有的 Compose 文件将在 Compose 1.6 上运行,与今天完全一样。

    查看 升级指南 以获取完整详情。

  • 网络功能支持已退出实验状态,现在是启用容器间通信的推荐方式。

    如果您使用新的文件格式,您的应用将使用网络功能。如果您尚未准备好,只需保留您的 Compose 文件原样,它将继续正常工作。

    默认情况下,您无需配置任何网络。实际上,使用 Compose 进行网络配置比使用链接所需的配置更少。 请参阅 网络指南以了解如何使用它。

    实验性标志 --x-networking--x-network-driver(在 Compose 1.5 中引入)已被移除。

  • 如果您使用的是新文件格式,现在可以向构建传递参数:

    build:
      context: .
      args:
        buildno: 1
    
  • 如果您使用的是新文件格式,现在可以同时指定 buildimage 键。docker-compose build 将构建镜像并使用您指定的名称为其打标签,而 docker-compose pull 将尝试拉取它。

  • 有一个新的 events 命令,用于从应用程序监控容器事件,功能类似于 docker events。这是一个很好的基础构建块,可用于在 Compose 之上开发工具,以便在特定事件(例如容器启动和停止)发生时执行相应操作。

  • 有一个新的 depends_on 选项,用于指定服务之间的依赖关系。这会强制启动顺序,并确保当您在具有依赖项的服务上运行 docker-compose up SERVICE 时,这些依赖项也会随之启动。

新功能

  • 新增了一个命令 config,用于在插值变量、解析相对路径以及合并多个文件和 extends 之后,验证并打印 Compose 配置。

  • 添加了一个新命令 create,用于创建容器但不启动它们。

  • 新增了一个命令 down,可通过单条指令停止并移除由 up 创建的所有资源。

  • 添加了对 cpu_quota 配置选项的支持。

  • 添加了对 stop_signal 配置选项的支持。

  • 命令 startrestartpauseunpause 现在若未修改任何容器,将以错误状态码退出。

  • up 新增了一个 --abort-on-container-exit 标志,该标志会导致 up 在第一个容器退出时停止所有容器并退出。

  • 已移除对 FIG_FILEFIG_PROJECT_NAME 的支持,且不再将 fig.yml 作为默认的 Compose 文件位置进行读取。

  • 已移除 migrate-to-labels 命令。

  • 移除了 --allow-insecure-ssl 标志。

错误修复

  • 修复了一个验证错误,该错误导致无法在 expose 字段中使用端口范围。

  • 修复了一个验证错误,该错误导致当entrypoint字段包含重复条目时无法使用数组。

  • 修复了一个在使用 extends 时导致 ulimits 被忽略的错误。

  • 修复了一个阻止 extra_hosts 中 IPv6 地址的漏洞。

  • 修复了一个导致在从多个 Compose 文件包含时 extends 被忽略的错误。

  • 修复了在 Compose 文件中定义容器卷时出现的错误警告。

  • 修复了一个阻止 uplogs 强制关闭行为的错误。

  • 修复了一个在使用默认网络驱动程序时,导致将 None 打印为网络驱动程序名称的错误。

  • 修复了一个使用字符串形式的 dnsdns_search 会导致错误的缺陷。

  • 修复了一个错误,该错误导致容器在重启状态时被错误地报告为“运行中”。

  • 修复了当 DOCKER_CERT_PATH 未正确设置时产生的令人困惑的错误消息。

  • 修复了一个缺陷:当容器使用非标准日志驱动程序(或完全未使用)时,附加到该容器会失败。

1.5.2

(2015-12-03)

  • 修复了一个导致 environmentenv_file 无法与 extends 正常使用的错误,该错误还导致没有值的环境变量键被赋予 None 值,而非继承自主机环境的值。

  • 修复了 1.5.1 版本中的一个回归问题,该问题导致在重新创建容器时错误地抛出关于卷的警告。

  • 修复了一个阻止构建使用 ADD <url>Dockerfile 的错误

  • 修复了 docker-compose restart 的一个错误,该错误导致无法启动已停止的容器。

  • 修复了对 SIGTERM 和 SIGINT 信号的处理,以正确停止容器

  • 添加对将 URL 作为 build 的值的支持

  • 改进了对 expose 选项的验证

1.5.1

(2015-11-12)

  • --force-rm 选项添加到 build

  • 在 Compose 文件中为服务添加 ulimit 选项。

  • 修复了一个错误:当服务从使用 image 改为使用 build 时,up 会报错提示“需要构建服务”。

  • 修复了一个在某些终端上会导致并行操作输出错误的缺陷。

  • 修复了一个阻止在 volumes_from 的模式更改时重新创建容器的错误。

  • 修复了 1.5.0 版本中的一个回归问题,该问题会导致非 UTF-8 的 Unicode 字符使uplogs崩溃。

  • 修复了 1.5.0 版本中的一个回归问题:此前当因与 Docker 守护进程通信发生 HTTP 超时而导致命令失败时,Compose 错误地返回了成功的退出状态码。

  • 修复了 1.5.0 版本中的一个回归问题,该问题中 name 被错误地接受为有效的服务选项,从而覆盖了服务的实际名称。

  • 当使用 --x-networking 时,Compose 不再将主机名设置为容器名称。

  • 当使用 --x-networking 时,Compose 仅在至少有一个容器使用该网络的情况下才会创建默认网络。

  • 当在 uplogs 期间打印日志时,请在每一行后刷新输出缓冲区,以防止缓冲问题导致日志被隐藏。

  • 如果某个容器的依赖项正在被创建,则重新创建该容器。 此前,仅当容器的依赖项已存在但也在被重新创建时,才会重新创建该容器。

  • 当 Compose 文件中的 volume 被先前容器的容器卷忽略并掩盖时,添加警告。

  • 改进在未使用 tty 运行时 pull 的输出。

  • 当使用多个 Compose 文件时,在尝试合并它们之前请先验证每个文件。此前,无效的文件会导致产生无助于解决问题的错误。

  • 允许在 environment 服务选项的键中使用连字符。

  • 通过将文件名包含在错误消息中,改进验证错误消息。

1.5.0

(2015-11-03)

重大变更

随着 Compose 文件中引入变量替换支持,任何在 command:entrypoint: 字段中使用环境变量($VAR${VAR})的 Compose 文件都将无法正常运行。

此前,这些值是在容器内部进行插值的,使用的是容器环境中的值。在 Compose 1.5.0 中,这些值将在主机上进行插值,使用的是主机环境中的值。

要将 Compose 文件迁移到 1.5.0 版本,请使用额外的 $ 对变量进行转义(例如:$$VAR$${VAR})。请参阅 https://github.com/docker/compose/blob/8cc8e61/docs/compose-file.md#variable-substitution

主要功能

新功能

  • 您现在可以选择性地将模式传递为 volumes_from。例如, volumes_from: ["servicename:ro"]

  • 由于 Docker 现在允许您创建具名的数据卷,因此您可以在 docker-compose.yml 中通过名称引用这些数据卷。例如,volumes: ["mydatavolume:/data"] 会将名为 mydatavolume 的数据卷挂载到容器内的 /data 路径。

    如果 volumes 中某一项的第一个组件以 ./~ 开头, 则将其视为路径,并在必要时执行相对路径的展开。否则, 将其视为卷名称并直接传递给 Docker。

    在此处阅读有关命名卷和卷驱动程序的更多信息: https://github.com/docker/docker/blob/244d9c33/docs/userguide/dockervolumes.md

  • docker-compose build --pull 指示 Compose 在构建之前为每个 Dockerfile 拉取基础镜像。

  • docker-compose pull --ignore-pull-failures 指示 Compose 在拉取单个服务的镜像失败时继续执行,而不是中止。

  • 您现在可以在 docker-compose.yml 中使用 ipc 选项来指定一个 IPC 命名空间。

  • docker-compose run 创建的容器现在可以使用 --name 标志进行命名。

  • 如果您通过 pip 安装 Compose 或将其作为库使用,它现在支持 Python 3。

  • image 现在支持镜像摘要(除了 ID 和标签之外)。例如, image: "busybox@sha256:38a203e1986cf79639cfb9b2e1d6e773de84002feea2d4eb006b52004ee8502d"

  • ports 现在支持端口范围。例如,

    ports:
      - "3000-3005"
      - "9000-9001:8000-8001"
    
  • docker-compose run 现在支持 -p|--publish 参数,类似于 docker run -p,用于将特定端口发布到主机。

  • docker-compose pausedocker-compose unpause 已实现, 类似于 docker pausedocker unpause

  • 当使用 extends 从同一 Compose 文件中的另一个服务复制配置时,您可以省略 file 选项。

  • Compose 可以作为 Docker 镜像进行安装和运行。这是一个实验性功能。

错误修复

  • Docker 守护进程支持的 log_driver 选项的所有值,现在也都受 Compose 支持。

  • docker-compose build 现在可以成功在 Swarm 集群上运行。

1.4.2

(2015-09-22)

  • 修复了 1.4.1 版本中的一个回归问题,该问题会导致在未使用 -d 选项时,docker-compose up 立即退出。

1.4.1

(2015-09-10)

错误修复

  • 某些配置更改(特别是对 linksvolumes_fromnet 的更改)在 docker-compose up 过程中未能正确触发容器重建。
  • docker-compose up <service> 显示的是所有服务的日志,而不仅仅是指定的服务。
  • 具有自定义容器名称的容器在日志中显示为 service_number,而不是其自定义容器名称。
  • 在扩展服务时,即使配置未发生更改,有时容器也会被重新创建。

1.4.0

(2015-08-04)

  • 默认情况下,docker-compose up 现在仅重新创建自创建以来配置已发生更改的服务的容器。这将为许多应用程序带来显著的速度提升。

    引入此功能的 Compose 1.3.0 中的实验性 --x-smart-recreate 标志已被移除,并添加了 --force-recreate 标志,用于在您需要重新创建所有内容时使用。

  • Compose 的多个命令——scalestopkillrm——现在可以并行地对多个容器执行操作,而不是按顺序执行,这在大型应用上将运行得更快。

  • 您现在可以使用 container_name 为服务的容器指定自定义名称。由于 Docker 容器名称必须唯一,这意味着您无法将该服务扩展到超过一个容器。

  • 使用 extends 时,您不再需要指定 file 选项——它将默认为当前文件。

  • 服务名称现在可以包含点、短划线和下划线。

  • Compose 现在可以通过将文件名指定为 -,从标准输入读取 YAML 配置,而不再仅限于从文件读取。这使得动态生成配置变得更加容易:

    $ echo 'redis: {"image": "redis"}' | docker-compose --file - up
    
  • 有一个新的 docker-compose version 命令,用于打印关于 Compose 捆绑依赖项的扩展信息。

  • docker-compose.yml 现在也支持 log_opt 以及 log_driver,允许您向服务的日志驱动程序传递额外的配置。

  • docker-compose.yml 现在支持 memswap_limit,类似于 docker run --memory-swap

  • 使用 volumes 选项挂载卷时,现在可以传入守护进程支持的任何模式,而不仅仅是 :ro:rw。例如,SELinux 用户可以传入 :z:Z

  • 您现在可以在 docker-compose.yml 中使用 volume_driver 选项指定自定义卷驱动程序,方式与 docker run --volume-driver 类似。

  • 已修复一个缺陷,该缺陷会导致 Compose 无法从提供纯(未加密)HTTP 服务的私有注册表拉取镜像。此前用于绕过此问题的 --allow-insecure-ssl 标志已被弃用,现在不再生效。

  • 已修复一个缺陷:当构建依赖于私有 Hub 镜像或来自私有注册表的镜像时,docker-compose build 会失败的问题现已解决。

  • 已修复一个缺陷:当 Docker 守护进程尚未完成移除某些容器时,Compose 会发生崩溃。

  • 已修复两个缺陷:当 docker-compose.yml 中指定的卷路径带有尾随斜杠时,Compose 有时会因“重复绑定挂载”错误而失败,或者无法将卷附加到容器。

感谢 @mnowster、@dnephin、@ekristen、@funkyfuture、@jeffk 和 @lukemarsden!

1.3.3

(2015-07-15)

回归修复

  • 在优雅地停止容器时,Compose 会将超时时间设置为 0,这实际上导致每次都强制执行 SIGKILL 信号。
  • Compose 有时会因 Docker API 返回的容器数据格式问题而崩溃。

1.3.2

(2015-07-14)

错误修复

  • 当在旧版本的 Compose 中通过运行 docker-compose run 创建了一次性容器时,docker-compose run 会因名称冲突而失败。现在,如果您有此类遗留容器,Compose 将显示错误消息,并告知您如何删除它们。
  • Compose 无法读取在新位置创建的 Docker 认证配置文件(~/docker/config.json),因此针对私有仓库的认证会失败。
  • 当容器附加了伪终端(pseudo-TTY)时,其在 docker-compose up 中的输出会被截断。
  • docker-compose up --x-smart-recreate 在镜像标签更新时有时会失败。
  • docker-compose up 有时会创建两个具有相同数字后缀的容器。
  • docker-compose rmdocker-compose ps 有时会列出并非当前项目一部分的服务(尽管没有错误地删除任何容器)。
  • 某些 docker-compose 命令在传入无效的服务名称时不会显示错误。

感谢 @dano、@josephpage、@kevinsimper、@lieryan、@phemmer、@soulrebel 和 @sschepens!

1.3.1

(2015-06-21)

错误修复

  • docker-compose build 在构建之前总会尝试拉取基础镜像。
  • docker-compose help migrate-to-labels 失败并出现错误。
  • 如果未指定网络模式,Compose 会将其设置为"bridge",而不是允许 Docker 守护进程使用其配置的默认网络模式。

1.3.0

(2015-06-18)

重要提示

  • 此版本包含破坏性变更,在运行您的应用之前,您需要移除或迁移现有的容器 - 请参阅 安装文档的升级部分以获取详细信息。

  • Compose 现在需要 Docker 1.6.0 或更高版本。

改进

  • Compose 现在使用容器标签而非名称来跟踪容器。这使得 Compose 运行更快,并且更易于与您自己的工具集成。

  • Compose 在重新创建服务的容器时,不再使用“中间容器”。这使得 docker-compose up 更加简单,并且对故障更具弹性。

新功能

  • docker-compose up 拥有一项 实验性 的新行为:它只会重新创建配置在 docker-compose.yml 中发生更改的服务的容器。这最终将成为默认行为,但现在您可以先尝试一下:

      $ docker-compose up --x-smart-recreate
    
  • 当在项目的子目录中调用时,docker-compose 现在会向上遍历父目录,直到找到 docker-compose.yml

若干新的配置键已添加到 docker-compose.yml

  • dockerfile,像docker build --file一样,允许您指定一个替代的 Dockerfile 与build一起使用。
  • labels,像docker run --labels一样,允许您向容器添加自定义元数据。
  • extra_hosts,像docker run --add-host一样,允许您向容器的/etc/hosts文件中添加条目。
  • pid: host,像docker run --pid=host一样,允许您复用与宿主机相同的 PID 命名空间。
  • cpuset,像docker run --cpuset-cpus一样,允许您指定要允许执行的 CPU。
  • read_only,像docker run --read-only一样,允许您将容器文件系统挂载为只读模式。
  • security_opt,像docker run --security-opt一样,允许您指定 安全选项
  • log_driver,像docker run --log-driver一样,允许您指定一个 日志驱动

错误修复

  • docker-compose run 的输出有时会被截断,尤其是在 Jenkins 下运行时。
  • docker-compose.yml 中更改卷配置后,服务的卷有时不会更新。
  • 对第三方镜像仓库进行身份验证有时会失败。
  • docker-compose run --rm 如果服务设置了 restart 策略,将会导致移除容器失败。
  • docker-compose scale 如果服务在主机上暴露了特定端口号,将拒绝将该服务扩展到超过 1 个容器。
  • Compose 将拒绝创建具有相同主机路径的多个卷条目。

感谢 @ahromis、@albers、@aleksandr-vin、@antoineco、@ccverak、@chernjie、@dnephin、@edmorley、@fordhurley、@josephpage、@KyleJamesWalker、@lsowen、@mchasal、@noironetworks、@sdake、@sdurrheimer、@sherter、@stephenlawrence、@thaJeztah、@thieman、@turtlemonvh、@twhiteman、@vdemeester、@xuxinkun 和 @zwily!

1.2.0

(2015-04-16)

  • docker-compose.yml 现在支持一个 extends 选项,该选项允许服务从另一个配置文件中的另一个服务继承配置。这对于在应用之间共享通用配置,或为不同环境配置同一应用非常有用。以下是 文档

  • 当在 Swarm 集群中使用 Compose 时,相互依赖的容器将被共同调度到同一个节点上。这意味着大多数 Compose 应用现在可以开箱即用,只要它们不使用 build

  • 在使用 Compose 与 Swarm 集群时,重复调用 docker-compose up 现在可以可靠地工作。

  • 传递给 build 的目录、传递给 env_file 的文件名以及传递给 volumes 的卷主机路径,现在被视为相对于配置文件所在目录,而非 docker-compose 运行所在的目录。在大多数情况下,这两者是相同的,但如果您使用 -f|--file 参数指定另一个目录中的配置文件,这将是一个破坏性变更

  • 服务现在可以使用 net: container:<service> 共享另一个服务的网络命名空间。

  • volumes_fromnet: container:<service> 条目在解析依赖关系时会被纳入考虑,因此 docker-compose up <service> 将正确启动 <service> 的所有依赖项。

  • docker-compose run 现在接受一个 --user 参数来指定运行命令的用户,就像 docker run 一样。

  • upstoprestart 命令现在接受一个 --timeout(或 -t)参数,用于指定在尝试优雅停止容器时的等待时长,行为与 docker stop 相同。

  • docker-compose rm 现在接受 -f 作为 --force 的简写,就像 docker rm 一样。

感谢 @abesto、@albers、@alunduil、@dnephin、@funkyfuture、@gilclark、@IanVS、@KingsleyKelly、@knutwalker、@thaJeztah 和 @vmalloc!

1.1.0

(2015-02-25)

Fig 已重命名为 Docker Compose,或简称为 Compose。这对您有以下几方面的影响:

  • 您输入的命令现在是 docker-compose,而不是 fig
  • 您应该将 fig.yml 重命名为 docker-compose.yml。
  • 如果您是通过 PyPI 进行安装,该包现在是 docker-compose,请使用 pip install docker-compose 进行安装。

除此之外,此版本中还包含大量新内容:

  • 我们做了一些小的调整,以确保 Compose 能与 Swarm(Docker 新的集群工具)协同工作( https://github.com/docker/swarm)。最终,您将能够把 Compose 指向一个 Swarm 集群,而不是独立的 Docker 主机,它会在集群上运行您的容器,而无需您进行任何额外操作。由于 Swarm 仍在开发中,目前的集成尚不完善,许多 Compose 功能暂时还无法使用。

  • docker-compose run 现在拥有一个 --service-ports 标志,用于在给定服务上暴露端口。例如,这对于使用交互式调试器运行您的 Web 应用程序非常有用。

  • 您现在可以在 docker-compose.yml 中使用 external_links 选项,将容器链接到应用外部。

  • 您现在可以使用 --no-build 选项防止 docker-compose up 自动构建镜像。这将减少 API 调用次数并运行得更快。

  • 如果您在使用 image 键时未指定标签,Compose 将默认使用 latest 标签,而不会拉取所有标签。

  • docker-compose kill 现在支持 -s 标志,允许您指定要发送到服务容器的确切信号。

  • docker-compose.yml 现在有一个 env_file 键,类似于 docker run --env-file,允许您在单独的文件中指定多个环境变量。如果您有很多环境变量,或者希望将敏感信息排除在版本控制之外,这将非常有用。

  • docker-compose.yml 现在支持 dns_searchcap_addcap_dropcpu_sharesrestart 选项,类似于 docker run--dns-search--cap-add--cap-drop--cpu-shares--restart 选项。

  • Compose 现在附带 Bash 标签补全功能 - 请参阅安装和使用文档,地址为 https://github.com/docker/compose/blob/1.1.0/docs/completion.md

  • 已修复多个错误 - 详见里程碑详情: https://github.com/docker/compose/issues?q=milestone%3A1.1.0+

感谢 @dnephin、@squebe、@jbalonso、@raulcd、@benlangfield、@albers、@ggtools、@bersace、@dtenenba、@petercv、@drewkett、@TFenby、@paulRbr、@Aigeruth 和 @salehe!

1.0.1

(2014-11-04)

  • 添加了 --allow-insecure-ssl 选项,以允许 fig upfig runfig pull 从不安全的注册表中拉取镜像。
  • 修复了 fig run 在 Jenkins 中不显示输出的问题。
  • 修复了一个缺陷,该缺陷导致 Fig 无法构建包含指向 URL 的 ADD 语句的 Dockerfile。

1.0.0

(2014-10-16)

亮点:

  • Fig 已加入 Docker。 Fig 将继续得到维护,同时我们也将把 Fig 中最优秀的部分整合到 Docker 本身中。

    这意味着 GitHub 仓库已迁移至 https://github.com/docker/fig,我们的 IRC 频道现已变更为 Freenode 上的 #docker-fig。

  • Fig 可以与 官方 Docker OS X 安装程序一起使用。Boot2Docker 会从您的主机挂载主目录,因此卷可以按预期工作。

  • Fig 支持 Docker 1.3。

  • 现在可以通过使用 DOCKER_CERT_PATHDOCKER_TLS_VERIFY 环境变量,借助 TLS 连接到 Docker 守护进程。

  • 有一个新的 fig port 命令,它以类似于 docker port 的方式输出服务的主机端口绑定。

  • 有一个新的 fig pull 命令,用于拉取服务的最新镜像。

  • 有一个新的 fig restart 命令,用于重启服务的容器。

  • Fig 会通过向服务名称追加数字来创建多个容器。例如,db_1db_2。为方便起见,Fig 现在会将第一个容器的别名设置为服务名称。例如,db

    此链接别名也是一个有效的主机名,并已添加到 /etc/hosts,因此您可以使用其主机名连接到已链接的服务。例如,您无需解析环境变量 DB_PORT_5432_TCP_ADDRDB_PORT_5432_TCP_PORT,可以直接使用主机名 db 和端口 5432

  • 卷定义现在支持 ro 模式、扩展 ~ 以及扩展环境变量。

  • .dockerignore 在构建时受支持。

  • 项目名称可以通过 FIG_PROJECT_NAME 环境变量进行设置。

  • --env--entrypoint 选项已添加到 fig run

  • Linux 版 Fig Binaries现已链接到较旧版本的 glibc,因此可在 CentOS 6 和 Debian Wheezy 上运行。

其他事项:

  • fig ps 现在可在 Jenkins 上运行,并且减少了对 Docker 守护进程的 API 调用次数。
  • --verbose 显示更有用的调试输出。
  • 当启动一个服务时,如果 volumes_from 指向一个没有任何容器运行的服务,该服务现在将被启动。
  • 大量文档改进。值得注意的是,环境变量已得到记录,并且整个过程中都使用了官方仓库。

感谢 @dnephin、@d11wtq、@marksteve、@rubbish、@jbalonso、@timfreund、@alunduil、@mieciu、@shuron、@moss、@suzaku 和 @chmouel!呼。

0.5.2

(2014-07-28)

  • 已为 fig build 添加了一个 --no-cache 选项,该选项可像 docker build --no-cache 一样绕过缓存。
  • 修复了 dns: fig.yml 选项,该选项曾导致 fig 报错。
  • 修复了 fig 无法在 Python 2.6 下启动的错误。
  • 修复了一个日志流式传输的错误,该错误偶尔会导致 fig 退出。

感谢 @dnephin 和 @marksteve!

0.5.1

(2014-07-11)

  • 如果服务已定义命令,使用 fig run [service] 且不附加任何参数即可运行它。
  • 项目名现在默认为包含 fig.yml 的目录,而不是当前工作目录(如果两者不同)
  • volumes_from 现在可以正常用于容器和服务了
  • 修复了在 fig up 中重新创建容器时的竞态条件

感谢 @ryanbrainard 和 @d11wtq!

0.5.0

(2014-07-11)

  • Fig 现在在您运行 fig runfig up 时启动链接。

    例如,如果您有一个依赖于 db 服务的 web 服务,fig run web ... 将启动 db 服务。

  • 环境变量现在可以从 Fig 运行的环境中解析。只需在您的 fig.yml 中将其指定为空变量,如果已设置,它将被解析:

    environment:
      RACK_ENV: development
      SESSION_SECRET:
  • volumes_from 现已在 fig.yml 中受支持。来自指定服务和容器的所有卷都将被挂载:

    volumes_from:
     - service_name
     - container_name
  • 现在可以在 ports 中指定主机地址:

    ports:
     - "0.0.0.0:8000:8000"
     - "127.0.0.1:8001:8001"
  • networkdir 选项现在已在 fig.yml 中受支持。

  • hostname 选项现在的工作方式与 Docker CLI 相同,拆分为 domainname 选项。

  • TTY 行为更加稳健,且正确支持调整大小。

  • 安全地加载 YAML 文件。

感谢 @d11wtq、@ryanbrainard、@rail44、@j0hnsmith、@binarin、@Elemecca、@mozz100 和 @marksteve 对本版本发布的帮助!

0.4.2

(2014-06-18)

  • 修复在使用 fig runfig upfig build 时出现的各种编码错误。

0.4.1

(2014-05-08)

  • 添加对 Docker 0.11.0 的支持。(感谢 @marksteve!)
  • 使项目名称可配置。(感谢 @jefmathiot!)
  • fig run 返回正确的退出码。

0.4.0

(2014-04-29)

  • 支持 Docker 0.9 和 0.10 版本
  • 拉取镜像时正确显示进度条(不再出现“滑雪坡”现象)
  • fig up 现在在任何容器退出时停止所有服务
  • 在 fig.yml 中添加了对 privileged 配置选项的支持(感谢 @kvz!)
  • fig up 输出中缩短并对齐日志前缀
  • 只有以 fig run 启动的容器才会链接回其自身服务
  • 在流式输出 fig build/run/up 时正确处理 UTF-8(感谢 @mauvm 和 @shanejonas!)
  • 错误消息改进

0.3.2

(2014-03-05)

  • fig run 添加了 --rm 选项。(感谢 @marksteve!)
  • fig.yml 添加了 expose 选项。

0.3.1

(2014-03-04)

  • 已添加贡献指南。(感谢 @kvz!)
  • 已修复 fig rm 抛出错误的问题。
  • 修复了 Docker 0.8.1 中 fig ps 的一个错误,该错误出现在存在没有指定命令的容器时。

0.3.0

(2014-03-03)

  • 我们现在提供适用于 OS X 和 Linux 的Binaries。不再需要通过 Pip 安装!
  • 添加 -f 标志以指定备用 fig.yml 文件
  • 添加对自定义链接名称的支持
  • 修复了重新创建时有时会挂起的错误
  • 更新 docker-py 以支持 Docker 0.8.0。
  • 各种文档改进
  • 各种错误消息改进

感谢 @marksteve、@Gazler 和 @teozkr!

0.2.2

(2014-02-17)

  • 使用 Cormen/Tarjan 拓扑排序解析依赖关系
  • 修复 fig up 不打印日志输出的问题
  • 按启动的相反顺序停止容器
  • 修复 scale 命令未绑定端口的问题

感谢 @barnybug 和 @dustinlacewell 在本版本中所做的工作。

0.2.1

(2014-02-04)

  • 对错误报告的常规改进(#77,#79)

0.2.0

(2014-01-31)

  • 将服务链接到自身,以便运行命令可以访问正在运行的服务。(#67)
  • 更完善的文档。
  • 使服务依赖解析更加可靠。(#48)
  • 使用 .yaml 扩展名加载 Fig 配置。(#58)

非常感谢 @cameronmaske、@mrchrisadams 和 @damianmoore 对本版本发布的帮助。

0.1.4

(2014-01-27)

  • 添加一个不包含项目名称的链接别名。这会使环境变量更短一些:REDIS_1_PORT_6379_TCP_ADDR。(#54)

0.1.3

(2014-01-23)

  • 修复端口有时配置不正确的问题。(#46)
  • 修复日志输出有时不显示的问题。(#47)

0.1.2

(2014-01-22)

  • fig run 添加 -T 选项以禁用伪终端。(#34)
  • 修复 fig up 需要拉取 ubuntu 镜像以重新创建容器的问题。(#33) 感谢 @cameronmaske!
  • 提高可靠性,修复方向键问题,并解决 fig run 中的竞态条件。(#34, #39, #40)

0.1.1

(2014-01-17)

  • 修复了端口未正确暴露的缺陷(#29)。感谢 @dustinlacewell!

0.1.0

(2014-01-16)

  • 容器会在每次 fig up 时重新创建,确保配置与 fig.yml 保持最新(#2)
  • 添加 fig scale 命令(#9)
  • 使用 DOCKER_HOST 环境变量来查找 Docker 守护进程,以与官方 Docker 客户端保持一致(之前为 DOCKER_URL)(#19)
  • fig ps 中截断长命令 (#18)
  • 为命令填充 CLI 帮助横幅(#15,#16)
  • 当缺少 fig.yml 时显示更友好的错误提示 (#4)
  • 修复了带有 fig build 日志记录的错误 (#3)
  • 修复了当某个步骤长时间没有生成输出时构建会超时的错误 (#6)
  • 修复了通过 Unix 套接字流式传输容器输出时引发错误的问题(#7)

非常感谢 @tomstuart、@EnTeQuAk、@schickling、@aronasorman 和 @GeoffreyPlitt。

0.0.2

(2014-01-02)

  • 改善文档
  • 尝试连接到 tcp://localdocker:4243 上的 Docker,并额外连接一个位于 localhost 的 UNIX 套接字。
  • 改进 fig up 的行为
  • fig rm 添加确认提示
  • 添加 fig build 命令

0.0.1

(2013-12-20)

首次发布。