在CentOS环境下使用Golang进行打包时,可以遵循以下最佳实践:
/etc/profile
文件中:export GOROOT=/usr/local/go
export GOPATH=$HOME/go
export PATH=$PATH:$GOROOT/bin:$GOPATH/bin
source /etc/profile
go version
go mod init example.com/myapp
go get
命令下载所需的依赖包,例如:go get -u github.com/gin-gonic/gin
go build
命令编译应用程序。可以通过设置GOOS
和GOARCH
环境变量来进行交叉编译,生成适用于不同平台的可执行文件。例如,为Linux 64位系统构建程序:GOOS=linux GOARCH=amd64 go build -o myapp
-ldflags
参数去除符号表和调试信息,以减小可执行文件的大小:go build -ldflags "-s -w" -o myapp
FROM golang:1.16
WORKDIR /app
COPY . .
RUN GOOS=linux GOARCH=amd64 CGO_ENABLED=0 go build -o myapp
CMD ["./myapp"]
docker build -t myapp:latest .
docker push myapp:latest
rpm-build
包:sudo yum install rpm-build
mkdir -p /rpmbuild/{BUILD,RPMS,SOURCES,SPECS,SRPMS}
/rpmbuild/SOURCES
目录。myapp.spec
的文件:Name: myapp
Version: 1.0
Release: 1%{?dist}
Summary: My Go application
License: MIT
URL: http://example.com/myapp
Source0: %{name}-%{version}.tar.gz
BuildRequires: golang
Requires: golang
%description
My Go application description.
%prep
%setup -q
%build
go build -o %{buildroot}/usr/bin/myapp
%install
rm -rf %{buildroot}
mkdir -p %{buildroot}/usr/bin
cp %{SOURCE0} %{buildroot}/usr/bin/
%files
/usr/bin/myapp
%changelog
* Mon Jan 01 2023 Your Name <your.email@example.com> - 1.0-1- Initial package
rpmbuild
命令构建RPM包:rpmbuild -ba /rpmbuild/SPECS/myapp.spec
GOOS
和GOARCH
环境变量进行交叉编译,生成不同平台的可执行文件。例如:GOOS=windows GOARCH=amd64 go build -o myapp.exe
GOOS=linux GOARCH=amd64 go build -o myapp
GOOS=darwin GOARCH=amd64 go build -o myapp
通过遵循这些最佳实践,可以使在CentOS平台下使用Golang进行打包的过程更加高效和便捷。