From 19f01a88b44c8e50d0cf34af8b36c6c9533b3153 Mon Sep 17 00:00:00 2001 From: yuqianhe Date: Wed, 10 Jun 2026 02:35:17 +0000 Subject: [PATCH] Add multi-stage Dockerfile and .dockerignore --- .dockerignore | 19 +++++++++++++++++++ Dockerfile | 32 ++++++++++++++++++++++++++++++++ 2 files changed, 51 insertions(+) create mode 100644 .dockerignore create mode 100644 Dockerfile diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 0000000..e0fbacc --- /dev/null +++ b/.dockerignore @@ -0,0 +1,19 @@ +# Binary +api-server + +# Git +.git/ +.gitignore +.dockerignore + +# Runtime data (mounted at runtime) +data/ + +# IDE +.idea/ +.vscode/ +*.swp + +# Docker +Dockerfile +docker-compose*.yml diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..cc6c677 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,32 @@ +# ============================================================ +# Stage 1: Build +# ============================================================ +FROM golang:1.24-alpine AS builder + +WORKDIR /build + +# 依赖缓存层(变更少,利用 Docker 缓存加速) +COPY go.mod go.sum ./ +RUN go mod download + +# 编译 +COPY . . +RUN CGO_ENABLED=0 go build -ldflags="-s -w" -o api-server . + +# ============================================================ +# Stage 2: Runtime +# ============================================================ +FROM alpine:3.21 + +RUN apk add --no-cache ca-certificates tzdata + +WORKDIR /app + +COPY --from=builder /build/api-server . + +# ip2region.xdb 运行时数据目录(卷挂载或 COPY) +RUN mkdir -p /app/data + +EXPOSE 8080 + +ENTRYPOINT ["./api-server", "serve"]