feat(api-gateway): admin 路由组 + BFF 路径重写 + announcements 路由 + Dockerfile 修复 + nextstep v2 文档

This commit is contained in:
SpecialX
2026-07-14 16:03:38 +08:00
parent 9fd7c018c2
commit a70977ad4b
8 changed files with 1121 additions and 14 deletions

View File

@@ -1,26 +1,37 @@
# 多阶段构建api-gateway 生产镜像
# 用法docker build -t edu/api-gateway:latest -f services/api-gateway/Dockerfile .
# 构建上下文必须是仓库根目录(需访问 packages/shared-go 与 go.work
# ============ Builder ============
FROM golang:1.25-alpine AS builder
WORKDIR /app
# 使用国内 Go 模块代理(容器内无法访问 proxy.golang.org
ENV GOPROXY=https://goproxy.cn,direct
ENV GOSUMDB=off
# git 与 ca-certificates 为 go mod 下载所需
RUN apk add --no-cache git ca-certificates
# 先拷依赖清单利用缓存shared-go + api-gateway
COPY packages/shared-go/go.mod ./packages/shared-go/
# 利用 go.work 时需拷贝根 go.work 与 shared-go 包
# 注意go.work 引用了 push-gateway但本构建仅需要 api-gateway + shared-go
# 故生成精简版 go.work 避免加载缺失模块
COPY go.work.sum ./
COPY packages/shared-go ./packages/shared-go
COPY services/api-gateway/go.mod services/api-gateway/go.sum ./services/api-gateway/
ENV GOPROXY=https://goproxy.cn,direct
# 生成仅含 api-gateway + shared-go 的精简 go.work
RUN printf 'go 1.25.0\n\nuse (\n ./packages/shared-go\n ./services/api-gateway\n)\n' > go.work
RUN cd services/api-gateway && go mod download
# 拷源码并构建
COPY services/api-gateway ./services/api-gateway
COPY packages/shared-go ./packages/shared-go
RUN cd services/api-gateway && CGO_ENABLED=0 GOOS=linux go build \
-ldflags="-s -w" \
# 静态编译,CGO_DISABLED 便于 alpine 运行
# 注入 version 便于可观测性资源属性
RUN CGO_ENABLED=0 GOOS=linux go build \
-ldflags="-s -w -X main.version=docker" \
-o /app/bin/api-gateway \
./main.go
./services/api-gateway
# ============ Runtime ============
FROM alpine:3.20 AS runner