feat(api-gateway): admin 路由组 + BFF 路径重写 + announcements 路由 + Dockerfile 修复 + nextstep v2 文档
This commit is contained in:
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user