golang 项目部署过程

178 阅读2分钟

Golang项目部署具体步骤,涵盖传统服务器与容器化两种主流方案:

⚙️ 一、部署前准备

环境配置‌

安装Go 1.21+(推荐使用官方二进制包) 配置GOPROXY加速依赖下载(国内建议 goproxy.cn) 私有依赖设置:go env -w GOPRIVATE=git.company.com

项目构建‌

bash Copy Code

编译Linux可执行文件(禁用CGO减小依赖)

CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -ldflags="-w -s" -o app ./cmd/main

注:-ldflags="-w -s" 移除调试信息,缩减二进制体积

🖥️ 方案一:传统服务器部署(Systemd托管) 步骤:

上传二进制文件‌

bash Copy Code scp app user@server:/opt/yourapp/ chmod +x /opt/yourapp/app # 添加执行权限

配置Systemd服务‌ 创建 /etc/systemd/system/yourapp.service:

ini Copy Code [Unit] Description=Your Go Application After=network.target

[Service] User=appuser Group=appgroup WorkingDirectory=/opt/yourapp ExecStart=/opt/yourapp/app Restart=always RestartSec=3

[Install] WantedBy=multi-user.target

关键参数:Restart=always 实现进程崩溃自动重启

启动服务‌

bash Copy Code sudo systemctl daemon-reload sudo systemctl enable yourapp sudo systemctl start yourapp

🐳 方案二:容器化部署(Docker + 云平台) 步骤:

编写Dockerfile‌(多阶段构建优化镜像)

dockerfile Copy Code

阶段1:编译

FROM golang:1.21-alpine AS builder WORKDIR /app COPY . . RUN CGO_ENABLED=0 go build -ldflags="-w -s" -o main ./cmd/main

阶段2:运行

FROM alpine:latest WORKDIR /app COPY --from=builder /app/main . RUN addgroup -S appgroup && adduser -S appuser -G appgroup USER appuser # 非root运行增强安全:ml-citation{ref="2,7" data="citationList"} CMD ["./main"]

构建与推送镜像‌

bash Copy Code docker build -t your-registry.com/yourapp:20250615 . docker push your-registry.com/yourapp:20250615

云平台部署‌(以微信云托管为例)

控制台创建服务 → 选择镜像 → 配置端口和环境变量 健康检查路径:/healthz(需在代码中实现) 🔒 关键安全实践 措施 作用说明 USER appuser 容器非root运行 CGO_ENABLED=0 避免C语言库依赖漏洞 配置文件托管至Vault 防止密钥泄漏 ✅ 部署后验证 服务健康检查‌ bash Copy Code curl http://localhost:8080/healthz # 返回HTTP 200即正常:ml-citation{ref="7" data="citationList"}

日志监控‌ 容器:docker logs -f <container_id> Systemd:journalctl -u yourapp.service -f

完整部署流程需包含‌灰度发布‌和‌回滚机制‌(如K8s滚动更新或Nginx流量切换)。

提示:生产环境务必配置 ‌Prometheus监控‌ + ‌ELK日志收集‌,参考方案见[Golang后台服务实战宝典]。