# 多阶段构建用于减小镜像大小
FROM --platform=$BUILDPLATFORM golang:1.24.5-alpine AS builder

# 安装构建依赖
# 注意：不再需要 gcc, musl-dev, sqlite-dev，因为使用 modernc.org/sqlite 纯Go驱动
RUN apk add --no-cache git ca-certificates tzdata upx

# 设置工作目录
WORKDIR /build

# 复制 Go 模块文件
COPY go.mod go.sum ./
RUN go mod download && go mod tidy

# 复制源码
COPY . .

# 添加构建参数以支持多架构
ARG TARGETOS
ARG TARGETARCH

# 构建应用
# CGO_ENABLED=0: 禁用CGO，使用纯Go SQLite驱动 (modernc.org/sqlite)
RUN CGO_ENABLED=0 GOOS=$TARGETOS GOARCH=$TARGETARCH go build \
    -ldflags="-w -s -X main.version=$(git describe --tags --always)" \
    -o s3-balance \
    cmd/s3-balance/main.go && \
    upx --best --lzma s3-balance || true

# 运行时镜像 - 使用轻量级Alpine Linux
FROM alpine:latest

# 安装运行时依赖
RUN apk --no-cache add ca-certificates tzdata

# 设置时区
ENV TZ=Asia/Shanghai

WORKDIR /app

# 复制二进制文件
COPY --from=builder /build/s3-balance /app/s3-balance

# 创建配置和数据目录
RUN mkdir -p /app/config /app/data

# 暴露端口
EXPOSE 8080

# 运行应用
ENTRYPOINT ["/app/s3-balance"]
CMD ["-config", "/app/config/config.yaml"]