Linux下Go语言容器化实践
一 环境准备与快速上手
二 Dockerfile 多阶段构建与优化
# 构建阶段
FROM golang:1.21-alpine AS builder
WORKDIR /app
COPY go.mod go.sum ./
RUN go mod download
COPY . .
RUN CGO_ENABLED=0 GOOS=linux go build -a -installsuffix cgo -o app ./cmd/api
# 运行阶段(非 root)
FROM alpine:latest
RUN apk --no-cache add ca-certificates
WORKDIR /app
COPY --from=builder /app/app .
USER 1001:1001
EXPOSE 8080
CMD ["./app"]
三 本地开发调试与 Docker Compose
version: "3.8"
services:
app:
build: .
ports:
- "8080:8080"
environment:
- PORT=8080
volumes:
- .:/app
- /app/bin
command: sh -c "go run main.go"
四 生产就绪与最佳实践
五 常见问题与排查