场景四:多架构镜像构建
本场景演示用 gvt docker 为后端与前端构建并推送多架构(amd64/arm64)镜像。
前置
- 已初始化含 Docker 的项目(init 时选择 Docker)
- 本地安装 Docker 且可用
docker buildx
注册 Dockerfile
bash
gvt docker add -f docker/backend/Dockerfile -n backend
gvt docker add -f docker/frontend/Dockerfile -n portal --registry registry.example.com配置写入 .gvt/docker/config.toml(全局)与 .gvt/docker/images/<name>.toml(每镜像),镜像名由 -n 指定。
构建并推送
bash
# 全部镜像、全部架构
gvt docker --tag v1.0
# 仅本地单架构(auto 平台,不推送)
gvt docker --local --tag v1.0
# 仅指定镜像
gvt docker -i backend -i portal
# 仅本地构建不推送
gvt docker -i backend --local配置私有仓库
在 config.toml 的 registries 列表中配置多个仓库地址,构建时会全部推送:
bash
# 注册镜像时指定多个仓库(可多次 -r)
gvt docker add -f docker/backend/Dockerfile -n backend \
-r registry.example.com \
-r private.example.comconfig.toml:
toml
[build]
registries = ["registry.example.com", "private.example.com"]不再使用
--secondary开关;所有仓库统一由registries列表管理。
绑定钩子流程
镜像配置 hook 字段后,宿主机构建前先执行该模块完整钩子(含前端打包):
toml
# .gvt/docker/images/portal.toml
[image]
name = "portal"
dockerfile = "docker/frontend/Dockerfile"
hook = "frontend/portal"任一检查失败则中断构建,保证推送的镜像始终通过质量门禁。
构建流程
- 绑定钩子(可选):执行
.gvt/hook/模块完整流程 - 宿主机预编译:交叉编译各目标架构二进制
- 多架构构建:docker buildx 构建镜像
- 推送:推送到配置的所有
registries仓库
详见 Docker 构建流程。