Skip to content

Docker 构建流程

gvt docker 按以下步骤完成镜像构建与推送。

流程步骤

  1. 绑定钩子(可选):若镜像配置了 hook,宿主机构建镜像前先执行该 .gvt/hook/ 模块的完整检查流程(含 format/lint/build 等,即前端打包);任一检查失败则中断构建
  2. 宿主机预编译:在宿主机上交叉编译各目标架构的二进制文件,避免在 Docker 内编译(加速构建)
  3. 多架构构建:使用 docker buildx 构建多架构镜像
  4. 推送:将镜像推送到配置的仓库(--secondary 时同时推送到私有仓库)

宿主机预编译

  • 在宿主机交叉编译目标架构二进制,写入构建上下文
  • 避免在容器内编译 Go,显著缩短构建时间
  • 支持 gvt docker cross 单独执行预编译步骤

buildx 多架构

  • 使用 .gvt/docker.tomlplatforms 定义目标架构
  • 通过 buildkitd.toml 加速基础镜像拉取
  • --arch 可临时覆盖平台范围(如仅 amd64

钩子绑定示例

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

构建 portal 镜像前,先运行 frontend/portal 模块的完整钩子(含 build 打包);失败即中断,保证推送镜像质量。

常用命令

bash
gvt docker --tag v1.0            # 全部镜像 + 全部架构
gvt docker --arch amd64          # 仅 amd64
gvt docker -i backend            # 仅 backend
gvt docker -p                    # 仅构建不推送
gvt docker --cache               # 启用构建缓存
gvt docker --no-hook             # 跳过绑定钩子

详见 gvt docker 命令参考Docker 构建配置

基于 MIT 协议开源