Skip to content

Docker 构建流程

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

流程步骤

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

宿主机预编译

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

buildx 多架构

  • 使用 .gvt/docker/config.tomlplatforms 定义目标架构
  • 通过 buildkitd.toml 加速基础镜像拉取
  • --local 使用 auto 单架构原生构建;平台由配置文件控制(--arch 开关已移除)

钩子绑定示例

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

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

多钩子示例:

toml
# .gvt/docker/images/backend.toml
[image]
name = "backend"
dockerfile = "docker/backend/Dockerfile"
hook = ["portal", "backend"]

构建 backend 镜像前,按顺序执行 portalbackend 两个钩子模块;名称取值见 gvt hook ls

常用命令

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

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

基于 MIT 协议开源