FROM golang:1.22-alpine AS builder

WORKDIR /app

# 复制go.mod和go.sum文件
COPY go.mod go.sum ./

# 下载依赖
RUN go mod download

# 复制源代码
COPY . .

# 构建应用
RUN CGO_ENABLED=0 GOOS=linux go build -o /app/ai-code-review

# 使用轻量级的基础镜像
FROM alpine:latest

WORKDIR /app

# 从构建阶段复制二进制文件
COPY --from=builder /app/ai-code-review /app/

# 创建默认配置文件到临时位置
RUN echo 'port: 53321\nadmin_token: "token"\n\nauto_disable:\n  enabled: true\n  max_failures: 3\n  reset_after: 30\n\nais: []\n\ngit: []' > /app/config.default.yaml

# 暴露端口
EXPOSE 53321

# 设置卷挂载点
VOLUME ["/app/config.yaml"]

# 运行应用,如果配置文件不存在则使用默认配置
CMD ["sh", "-c", "if [ ! -f /app/config.yaml ]; then cp /app/config.default.yaml /app/config.yaml; fi && /app/ai-code-review"]