在CentOS上使用Golang进行项目打包时,可以遵循以下最佳实践:
GOOS
和 GOARCH
进行多架构编译,为不同的平台生成可执行文件。GOOS=linux GOARCH=amd64 go build -o hello-linux-amd64 main.go
GOOS=windows GOARCH=amd64 go build -o hello-windows-amd64.exe main.go
FROM golang:1.12-alpine
COPY . /app
WORKDIR /app
RUN go build -o main .
EXPOSE 8080
CMD ["./main"]
docker build
和 docker run
命令进行打包和部署。go mod init main.go
go.mod
文件。module collector_gogo
go 1.14 require (
github.com/gogo/protobuf v1.3.1 // indirect
github.com/golang/protobuf v1.4.2
google.golang.org/protobuf v1.23.0
)
go build
和 go install
命令进行打包和安装。wget https://dl.google.com/go/go1.16.7.linux-amd64.tar.gz
sudo tar -xvf go1.16.7.linux-amd64.tar.gz -C /usr/local/
export GOPATH=$HOME/go
export PATH=$PATH:/usr/local/go/bin:$GOPATH/bin
source /etc/profile
chmod 777 main
./main
-ldflags="-extldflags='-static'"
参数进行静态编译,生成一个自包含的二进制文件,不依赖外部库。CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -a -installsuffix cgo -ldflags= "-extldflags='-static'" -o your_app_name main.go
FROM golang:1.23 as build
WORKDIR /src
RUN go mod download
GOOS=linux GOARCH=amd64 go build -a -installsuffix cgo -o /bin/mck ./
FROM alpine:latest
COPY --from=build /bin/mck /app/mck
CMD ["./mck"]
go clean -cache
命令清理构建缓存,以减少构建时间。-p
参数并行构建多个包,例如:go build -p 4
go mod
命令管理依赖项。upx --best --lzma your_app_name
通过遵循这些最佳实践,可以使在CentOS平台下使用Golang进行打包的过程更加高效和便捷。