centos

golang打包centos服务的秘诀

小樊
48
2025-12-01 23:54:42
栏目: 编程语言

Golang 打包为 CentOS 服务的实用秘诀

一、核心秘诀

二、最简落地流程

三、systemd 服务模板与要点

[Unit]
Description=My Go Application
After=network.target

[Service]
Type=simple
User=www
Group=www
ExecStart=/opt/myapp/bin/app
WorkingDirectory=/opt/myapp
Restart=always
RestartSec=5
Environment=GO_ENV=production DATABASE_URL=postgres://...
StandardOutput=journal
StandardError=journal
# 可选:优雅停机(若程序支持信号)
# ExecStop=/bin/kill -SIGTERM $MAINPID
# TimeoutStopSec=30

[Install]
WantedBy=multi-user.target

四、Docker 镜像与多阶段构建

# Dockerfile
FROM golang:1.22 AS builder
WORKDIR /app
COPY . .
RUN CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -ldflags "-s -w" -o bin/app main.go

FROM alpine:3.20
RUN apk --no-cache add ca-certificates
WORKDIR /opt/myapp
COPY --from=builder /app/bin/app ./bin/app
COPY conf ./conf
EXPOSE 8080
CMD ["./bin/app"]

五、常见问题与排查清单

0
看了该问题的人还看了