🧱 一、go build:最基础的构建方式
Go 的构建工具链是出了名的轻量、简洁,直接用 go build
就能把项目编译成二进制文件。
✅ 构建当前项目
go build -o myapp
-o myapp
指定输出文件名- 默认会构建当前目录下的
main.go
或package main
🌍 跨平台构建(Go 天然支持)
只需设置两个环境变量:
GOOS=linux GOARCH=amd64 go build -o myapp-linux
GOOS=windows GOARCH=amd64 go build -o myapp.exe
💡 无需在目标平台构建,只要设置环境变量即可构建不同系统的二进制!
📦 二、目录瘦身:只保留运行必需品
部署不等于打包整个项目,一般只需要这几样核心文件:
/dist
├── myapp # 可执行文件
├── config.yaml # 配置文件
└── static/ # 静态资源目录(可选)
不要把源码、测试代码、.git 目录一起打包上服务器!
🔐 三、环境变量与配置文件
配置管理是 Go 项目部署的重点:
✅ 使用环境变量(推荐做法)
import "os"
port := os.Getenv("APP_PORT")
通常会结合 .env
文件:
APP_PORT=8080
APP_DEBUG=true
使用 godotenv 读取:
go get github.com/joho/godotenv
_ = godotenv.Load(".env")
💬 在开发环境用
.env
,上线时直接通过系统环境变量注入,更加安全。
🐳 四、使用 Docker 打包运行
现代应用部署,Docker 是首选。我们来写一个标准的 多阶段构建 Dockerfile:
🛠️ Dockerfile
FROM golang:1.21-alpine as builder
WORKDIR /app
COPY . .
RUN go build -o main
FROM alpine
WORKDIR /root/
COPY --from=builder /app/main .
EXPOSE 8080
CMD ["./main"]
🚀 构建与运行
docker build -t my-go-app .
docker run -p 8080:8080 my-go-app
📦 Alpine 非常小巧,只打包了最终可执行文件,极大减小镜像大小。
🗃️ 五、部署方式参考
方式 | 场景 | 常用工具 |
---|---|---|
本地部署 | 内网环境、开发测试 | systemd , supervisor |
容器部署 | 云平台上线 | Docker , Podman |
集群部署 | 多模块、多服务场景 | Kubernetes , Helm , k3s |
🧠 小贴士:
supervisor
可用于守护 Go 应用进程;Docker
可打包应用及依赖;K8s
适用于分布式部署、滚动更新等场景。
📌 小结
- ✅
go build
支持一键构建、跨平台编译 - ✅ 部署目录要干净,仅保留核心运行文件
- ✅ 推荐使用环境变量管理配置,godotenv 很好用
- ✅ Docker 是现代 Go 项目的标配部署方式
🪧 下一篇预告:
📚 Go语言-初学者日记(九):测试与性能分析
单元测试怎么写?性能瓶颈怎么查?pprof 怎么用?我们下篇见~