Skip to content

场景四:多架构镜像构建

本场景演示用 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.tomlregistries 列表中配置多个仓库地址,构建时会全部推送:

bash
# 注册镜像时指定多个仓库(可多次 -r)
gvt docker add -f docker/backend/Dockerfile -n backend \
  -r registry.example.com \
  -r private.example.com

config.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"

任一检查失败则中断构建,保证推送的镜像始终通过质量门禁。

构建流程

  1. 绑定钩子(可选):执行 .gvt/hook/ 模块完整流程
  2. 宿主机预编译:交叉编译各目标架构二进制
  3. 多架构构建:docker buildx 构建镜像
  4. 推送:推送到配置的所有 registries 仓库

详见 Docker 构建流程

基于 MIT 协议开源