# ------------------------------ # Stage 1 — Build # ------------------------------ FROM golang:1.25.1 AS builder ARG GOPROXY ENV GOPROXY=${GOPROXY} WORKDIR /src # 先复制 go.mod / go.sum,使 Docker 构建缓存层可复用 COPY go.mod go.sum ./ RUN go mod download # 再复制源码 COPY . . # 编译 RUN CGO_ENABLED=0 go build -ldflags="-s -w" -o account ./cmd/accountsvc/main.go # ------------------------------ # Stage 2 — Runtime # ------------------------------ FROM ubuntu:24.04 WORKDIR /app RUN apt-get update \ && apt-get install -y --no-install-recommends ca-certificates stunnel4 gettext-base netcat-openbsd curl \ && rm -rf /var/lib/apt/lists/* \ && mkdir -p /var/run/stunnel \ && chown -R nobody:nogroup /var/run/stunnel COPY --from=builder /src/account /usr/local/bin/account COPY entrypoint.sh /usr/local/bin/entrypoint.sh COPY config /app/config RUN chmod +x /usr/local/bin/entrypoint.sh EXPOSE 8080 ENTRYPOINT ["/usr/local/bin/entrypoint.sh"]