# 多阶段构建 - 第一阶段：编译（使用已安装的镜像）
FROM golang:1.26-alpine3.23 AS builder

RUN apk add --no-cache git ca-certificates tzdata

RUN go env -w GO111MODULE=on \
 && go env -w GOPROXY=https://goproxy.cn,direct \
 && go env -w GOPRIVATE=gitea.com/red-future/*

# 配置Git URL重定向到私有仓库
RUN git config --global url."http://116.204.74.41:3000/red-future/".insteadOf "https://gitea.com/red-future/" \
 && git config --global url."http://116.204.74.41:3000/red-future/".insteadOf "http://gitea.com/red-future/"

WORKDIR /build

COPY go.mod go.sum ./

RUN go mod download && go mod verify

COPY . .

RUN go mod tidy

# 编译生成 rag 二进制
RUN CGO_ENABLED=0 GOOS=linux go build -v -o rag .

# 第二阶段：运行
FROM alpine:3.23

ENV TIME_ZONE=Asia/Shanghai
RUN apk add --no-cache ca-certificates tzdata && \
    ln -sf /usr/share/zoneinfo/$TIME_ZONE /etc/localtime

WORKDIR /app

# 复制编译好的二进制文件
COPY --from=builder /build/rag .
COPY config.yml ./

# 创建日志目录
RUN mkdir -p /logs /app/resource/log/run /app/resource/log/server

EXPOSE 3006

CMD ["./rag"]
