打包Golang应用Ubuntu环境配置指南
在Ubuntu上安装Golang有两种常用方式:
sudo apt update
sudo apt install golang-go
go1.22.0.linux-amd64.tar.gz),解压至/usr/local目录:wget https://golang.org/dl/go1.22.0.linux-amd64.tar.gz
sudo tar -C /usr/local -xzf go1.22.0.linux-amd64.tar.gz
编辑~/.bashrc(当前用户)或/etc/profile(全局)文件,添加以下内容:
export GOROOT=/usr/local/go # Go安装路径
export GOPATH=$HOME/go # Go工作目录(存放第三方依赖和项目)
export PATH=$PATH:$GOROOT/bin:$GOPATH/bin # 将Go命令加入PATH
export GOPROXY=https://goproxy.cn,direct # 国内镜像加速(可选但推荐)
export GO111MODULE=on # 启用Go模块(推荐新项目使用)
使配置生效:
source ~/.bashrc # 或 source /etc/profile
运行以下命令检查Go版本,确认安装成功:
go version
# 输出示例:go version go1.22.0 linux/amd64
在项目目录下初始化Go模块(用于管理依赖):
mkdir my-golang-app && cd my-golang-app
go mod init my-golang-app # 创建go.mod文件
go build -o myapp # 生成名为myapp的可执行文件
GOOS(操作系统)和GOARCH(架构)变量,编译为不同平台文件:# 编译为Windows 64位可执行文件
CGO_ENABLED=0 GOOS=windows GOARCH=amd64 go build -o myapp.exe
# 编译为Linux 64位可执行文件(无CGO依赖,适合容器部署)
CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -o myapp-linux
在项目根目录创建Makefile文件,内容如下:
GO := go
PROJECT_PATH := $(shell pwd)
OUTPUT_NAME := myapp
BUILD_TARGET := $(PROJECT_PATH)/bin/$(OUTPUT_NAME)
BUILD_ENV := CGO_ENABLED=0 GOOS=linux GOARCH=amd64
all: build
build:
$(GO) build -o $(BUILD_TARGET) $(BUILD_ENV) $(PROJECT_PATH)
clean:
rm -f $(BUILD_TARGET)
运行make命令执行编译,make clean清理生成文件。
创建build.sh文件,内容如下:
#!/bin/bash
GO := go
PROJECT_PATH := $(shell pwd)
OUTPUT_NAME := myapp
BUILD_TARGET := $(PROJECT_PATH)/bin/$(OUTPUT_NAME)
BUILD_ENV := CGO_ENABLED=0 GOOS=linux GOARCH=amd64
build() {
$(GO) build -o $(BUILD_TARGET) $(BUILD_ENV) $(PROJECT_PATH)
}
clean() {
rm -f $(BUILD_TARGET)
}
case "$1" in
build)
build
;;
clean)
clean
;;
*)
echo "Usage: $0 {build|clean}"
exit 1
;;
esac
赋予执行权限并运行:
chmod +x build.sh
./build.sh build # 编译
./build.sh clean # 清理
upx工具减小文件体积(适合部署到资源有限的服务器):sudo apt install upx
upx --best myapp # 压缩可执行文件
Dockerfile实现容器化部署:FROM golang:1.22 AS builder
WORKDIR /app
COPY . .
RUN go mod download
RUN CGO_ENABLED=0 GOOS=linux go build -o myapp cmd/myapp/main.go
FROM scratch # 使用空镜像(最小化体积)
COPY --from=builder /app/myapp /myapp
ENTRYPOINT ["/myapp"]
构建并运行Docker镜像:docker build -t my-golang-app .
docker run -p 8080:8080 my-golang-app
通过以上步骤,你可以在Ubuntu环境中完成Golang应用的配置、编译、打包及优化,满足不同场景的部署需求。