# ── 构建阶段 ──
FROM golang:1.22-alpine AS build
WORKDIR /src

# 依赖缓存（go.sum 变化才重下）
COPY go.mod go.sum ./
RUN go mod download

COPY . .
# modernc.org/sqlite 为纯 Go，可 CGO_ENABLED=0 交叉编译
RUN CGO_ENABLED=0 GOOS=linux go build \
    -ldflags "-s -w -X oil-price-monitor/internal/api.version=0.1.0" \
    -o /out/oil-monitor ./cmd/server

# ── 运行阶段 ──
FROM alpine:3.20
RUN adduser -D -H -u 1000 oilmon
WORKDIR /app
COPY --from=build /out/oil-monitor /app/oil-monitor
RUN mkdir -p /app/data && chown -R oilmon:oilmon /app
USER oilmon
EXPOSE 8080
VOLUME ["/app/data"]
ENV OIL_MONITOR_DB_PATH=/app/data/oilmonitor.db \
    OIL_MONITOR_LOG_LEVEL=info \
    OIL_MONITOR_TIMEZONE=Asia/Shanghai
CMD ["/app/oil-monitor"]