Docker 构建流程
gvt docker 按以下步骤完成镜像构建与推送。
流程步骤
- 绑定钩子(可选):若镜像配置了
hook,宿主机构建镜像前先执行该.gvt/hook/模块的完整检查流程(含 format/lint/build 等,即前端打包);任一检查失败则中断构建 - 宿主机预编译:在宿主机上交叉编译各目标架构的二进制文件,避免在 Docker 内编译(加速构建)
- 多架构构建:使用
docker buildx构建多架构镜像 - 推送:将镜像推送到配置的仓库(
--secondary时同时推送到私有仓库)
宿主机预编译
- 在宿主机交叉编译目标架构二进制,写入构建上下文
- 避免在容器内编译 Go,显著缩短构建时间
- 支持
gvt docker cross单独执行预编译步骤
buildx 多架构
- 使用
.gvt/docker.toml的platforms定义目标架构 - 通过
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 构建配置。