在 Ubuntu 上“打包 Golang”通常有以下几种含义,我分别说明,你可以按需求选择:
sudo apt update
sudo apt install golang-go
或去 https://go.dev/dl/ 下载官方包。
验证:
go version
进入项目目录:
cd your_project
go build -o myapp main.go
生成的可执行文件:
./myapp
GOOS=windows GOARCH=amd64 go build -o myapp.exe main.go
dpkg-deb(手动)myapp/
├── DEBIAN
│ └── control
├── usr
│ └── local
│ └── bin
│ └── myapp
Package: myapp
Version: 1.0
Section: utils
Priority: optional
Architecture: amd64
Maintainer: you@example.com
Description: My Golang App
go build -o myapp main.go
mkdir -p myapp/usr/local/bin
cp myapp myapp/usr/local/bin/
dpkg-deb --build myapp
生成:
myapp.deb
安装:
sudo dpkg -i myapp.deb
nfpm(推荐,简单)sudo apt install nfpm
nfpm.yaml 示例:
name: myapp
arch: amd64
platform: linux
version: 1.0.0
section: utils
priority: optional
maintainer: you@example.com
description: My Golang App
contents:
- src: ./myapp
dst: /usr/local/bin/myapp
mode: 0755
打包:
nfpm pkg -t myapp.deb
FROM golang:1.22 AS build
WORKDIR /app
COPY . .
RUN go build -o app
FROM ubuntu
COPY --from=build /app/app /usr/local/bin/app
CMD ["app"]
构建:
docker build -t myapp .
# /etc/systemd/system/myapp.service
[Unit]
Description=My Golang App
[Service]
ExecStart=/usr/local/bin/myapp
Restart=always
[Install]
WantedBy=multi-user.target
sudo systemctl enable myapp
sudo systemctl start myapp
如果你能具体说:
我可以直接给你一套完整命令。