Skip to content

场景四:多架构镜像构建

本场景演示用 gvt docker 为后端与前端构建并推送多架构(amd64/arm64)镜像。

前置

  • 已初始化含 Docker 的项目(init 时选择 Docker)
  • 本地安装 Docker 且可用 docker buildx

注册 Dockerfile

bash
gvt docker add -f docker/backend/Dockerfile
gvt docker add -f docker/frontend/Dockerfile --registry registry.example.com

配置写入 .gvt/docker.toml,镜像名由目录自动推导。

构建并推送

bash
# 全部镜像、全部架构
gvt docker --tag v1.0

# 仅 amd64
gvt docker --arch amd64 --tag v1.0

# 仅指定镜像
gvt docker -i backend -i portal

# 仅本地构建不推送
gvt docker -p

配置私有仓库

bash
gvt docker add -f docker/backend/Dockerfile \
  --registry registry.example.com \
  --secondary-registry private.example.com \
  --push-secondary

# 构建时同时推送私有仓库
gvt docker --secondary

绑定钩子流程

镜像配置 hook 字段后,宿主机构建前先执行该模块完整钩子(含前端打包):

toml
[[docker.images]]
name = "portal"
dockerfile = "docker/frontend/Dockerfile"
hook = "frontend/portal"

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

构建流程

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

详见 Docker 构建流程

基于 MIT 协议开源