跳转至

compose

从 Compose 文件提取镜像列表,批量执行 sync / pull / spull。

用法

docker mtrans compose <动作> [-f FILE]... [-R REGISTRY] [-o ORG] [-r REPO] [-m MODE]

参数

参数 说明
<动作> 必填,取值 sync / pull / spull,语义与单镜像命令完全一致
-f, --file <FILE> Compose 配置文件路径,可多次指定;缺省时由 docker compose config 自动发现
-R, --registry 单次覆盖 target_registry(同单镜像命令)
-o, --org 单次覆盖 target_org
-r, --repo 单次覆盖 target_repo
-m, --mode 单次覆盖组合模式(½/3)

示例

# 使用默认 Compose 文件,批量触发远程复制
docker mtrans compose sync

# 指定多个 Compose 文件
docker mtrans compose sync -f docker-compose.yml -f docker-compose.override.yml

# 批量拉回
docker mtrans compose pull -f compose.yaml

# 批量 sync + pull,覆盖目标注册表与模式
docker mtrans compose spull -f docker-compose.yml -R new.example.com -m 2

执行流程

  1. 调用 docker compose config --images 提取镜像列表(支持环境变量插值、extends、profiles 等 Compose 特性)。
  2. 对镜像列表保序去重,任一镜像含 digest(@sha256:...)则整批拒绝并列出违规项。
  3. 打印镜像总数与列表,然后按动作串行遍历执行。
  4. 任一镜像失败立即停止,错误信息标注第几个镜像;已成功的不回滚。

前置条件

  • 安装 Docker CLI 与 Compose v2 插件(docker compose 可用)。
  • 在包含 Compose 文件的目录执行,或用 -f 显式指定文件路径。
  • 其余前置条件与所选动作(sync/pull/spull)完全一致:
  • sync / spull:目标注册表已登录,auth_passphrase 与 GitHub Token 已配置。
  • pull / spull:目标注册表已登录。

注意事项

  • 仅有 build: 而无 image: 字段的服务不会出现在镜像列表中(属 Compose 语义)。
  • COMPOSE_PROFILES 等环境变量会影响提取到的镜像集合,属预期行为。
  • 批量 sync 会为每个镜像触发一次远程流水线并轮询等待,耗时随镜像数量线性增长。