compose¶
从 Compose 文件提取镜像列表,批量执行 sync / pull / spull。
用法¶
参数¶
| 参数 | 说明 |
|---|---|
<动作> |
必填,取值 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
执行流程¶
- 调用
docker compose config --images提取镜像列表(支持环境变量插值、extends、profiles 等 Compose 特性)。 - 对镜像列表保序去重,任一镜像含 digest(
@sha256:...)则整批拒绝并列出违规项。 - 打印镜像总数与列表,然后按动作串行遍历执行。
- 任一镜像失败立即停止,错误信息标注第几个镜像;已成功的不回滚。
前置条件¶
- 安装 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会为每个镜像触发一次远程流水线并轮询等待,耗时随镜像数量线性增长。