33 lines
490 B
Docker
33 lines
490 B
Docker
FROM golang:1.24-alpine AS builder
|
|
|
|
# 安装 UPX
|
|
RUN apk add --no-cache upx
|
|
|
|
WORKDIR /app
|
|
|
|
# 复制依赖文件
|
|
COPY go.mod go.sum ./
|
|
RUN go mod download
|
|
|
|
# 复制代码
|
|
COPY . .
|
|
|
|
# 构建静态链接的二进制文件
|
|
RUN go build -ldflags="-s -w" -o server ./cmd \
|
|
&& upx -9 server
|
|
|
|
# alpine:3.19 scratch 最小体积
|
|
FROM scratch
|
|
|
|
WORKDIR /app
|
|
|
|
# 复制二进制文件
|
|
COPY --from=builder /app/server .
|
|
|
|
# 环境变量
|
|
ENV APP_ENV=production
|
|
|
|
EXPOSE 8080
|
|
|
|
# 运行服务
|
|
CMD ["./server"] |