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