CentOS系统Golang打包的最佳实践
以下是在CentOS系统上进行Golang打包的最佳实践:
-
环境配置
- 安装Go并配置环境变量:
export GOROOT=/usr/local/go export GOPATH=$HOME/go export PATH=$PATH:$GOROOT/bin:$GOPATH/bin
- 启用Go Modules(Go 1.11+):
go env -w GO111MODULE=on
- 安装Go并配置环境变量:
-
依赖管理
- 使用
go mod init
初始化项目,go mod tidy
自动管理依赖。
- 使用
-
交叉编译
- 通过
GOOS
和GOARCH
指定目标平台,例如:GOOS=linux GOARCH=amd64 go build -o myapp-linux-amd64 main.go
- 静态编译(避免依赖问题):
CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -ldflags="-s -w" -o myapp main.go
- 通过
-
优化构建
- 并行编译:
go build -p 4
(根据CPU核心数调整)。 - 使用缓存工具(如
sccache
)加速重复构建。
- 并行编译:
-
打包与部署
- Docker化:编写多阶段Dockerfile,减小镜像体积,例如:
FROM golang:alpine AS build WORKDIR /app COPY . . RUN CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -o myapp . FROM alpine COPY --from=build /app/myapp /app CMD ["/app/myapp"]
- 压缩二进制文件(可选):使用
upx
工具减小体积。
- Docker化:编写多阶段Dockerfile,减小镜像体积,例如:
-
权限与运行
- 上传至服务器后,设置执行权限:
chmod +x myapp
。 - 可通过
nohup
或systemd
实现后台运行。
- 上传至服务器后,设置执行权限:
关键参考:
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权请联系我们,一经查实立即删除!