动手实践:用Docker多阶段构建把Go应用镜像压到最小
Go语言编译为静态二进制,天然适合容器化,但新手常把整个构建环境打进镜像,导致镜像臃肿。多阶段构建(multi-stage build)把编译与运行分离:第一阶段用golang镜像完成编译,第二阶段仅把二进制复制到轻量或distroless基础镜像。 实践要点包括:第一阶段开启CGO_ENABLED=0与静态链接;第二阶段用distroless/static或scratch;通过.dockerignore排除无关文件。最终镜像可控制在20MB以内,显著加快拉取与启动,并缩小攻击面。 |