在Ubuntu上打包Golang应用可根据需求选择以下方式,步骤及工具参考自1-8:
sudo apt update && sudo apt install golang-go
go build -o myapp main.go # 指定输出文件名
CGO_ENABLED=0 go build -o myapp main.go
upx压缩工具:sudo apt install upx
upx --best myapp # 压缩二进制文件
start.sh:#!/bin/bash
./myapp
赋予执行权限:chmod +x start.sh
/etc/systemd/system/myapp.service:[Unit]
Description=My Golang App
After=network.target
[Service]
ExecStart=/path/to/myapp
Restart=always
[Install]
WantedBy=multi-user.target
启用并启动服务:sudo systemctl enable myapp && sudo systemctl start myapp
GOOS=linux GOARCH=amd64 go build -o myapp-linux-amd64 main.go # 例如生成Linux 64位
Dockerfile:FROM golang:1.21 AS builder
WORKDIR /app
COPY . .
RUN go mod download && CGO_ENABLED=0 go build -o myapp .
FROM scratch
COPY --from=builder /app/myapp /myapp
ENTRYPOINT ["/myapp"]
构建并运行:docker build -t myapp .
docker run -d -p 8080:8080 myapp
tar -czvf myapp.tar.gz myapp # 便于传输
Makefile或shell脚本简化流程。go mod tidy清理依赖,确保版本一致。根据实际需求选择方案,基础场景可选二进制+脚本,生产环境推荐Docker容器化。