在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參數去除符號表和調試信息,以減小可執行文件的大?。?pre class="hljs">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進行打包的過程更加高效和便捷。