# udeServer 多阶段构建
# 构建阶段：golang 官方镜像编译 linux 静态二进制
FROM golang:1.25 AS builder

WORKDIR /app

# go模块代理
RUN go env -w GOPROXY=https://goproxy.cn,direct

# 先拷贝依赖清单，利用 docker 层缓存加速重复构建
COPY go.mod go.sum ./
RUN go mod download

# 拷贝源码并编译（CGO 关闭：全部依赖为纯 Go，静态链接可直接跑在精简基础镜像上）
COPY . .
RUN CGO_ENABLED=0 GOOS=linux go build -ldflags="-s -w" -o udeserver .

# 运行阶段：alpine 精简镜像（带 ca-certificates：OTP/验签服务走 HTTPS 时需要；tzdata：日志时区）
FROM alpine:3.20

RUN apk add --no-cache ca-certificates tzdata \
    && adduser -D -u 1000 app

WORKDIR /app
COPY --from=builder /app/udeserver ./udeserver
# 关键：配置必须放进 ./etc/ 目录，与启动参数 -f etc/udeserver-api.yaml 对应
COPY --from=builder /app/etc/udeserver-api.yaml ./etc/udeserver-api.yaml

USER app

# 9993 UDE 管理 API
EXPOSE 9993

CMD ["./udeserver", "-f", "etc/udeserver-api.yaml"]
