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

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

ENV GO111MODULE=on
ENV GOPROXY=https://goproxy.cn,direct
ENV CGO_ENABLED=0
ENV GOTOOLCHAIN=auto
ENV GOPRIVATE=gitea.com/red-future/common

# 配置git使用私有Gitea仓库（带Token认证）
RUN git config --global url."http://x-token-auth:9b31146aa8c10a7cb4f2e49dcee0934a223be1076289810e1ad98b968066c2bc@116.204.74.41:3000/red-future/common.git".insteadOf "https://gitea.com/red-future/common.git" && \
    git config --global credential.helper store

WORKDIR /build

# 复制父目录的 common 模块(因为 go.mod 中使用了本地 replace)
COPY ../common /build/common
COPY . .

RUN go mod download && go mod tidy

RUN go build -ldflags="-s -w" -o main ./main.go

# 第二阶段：运行
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/main .
COPY --from=builder /build/config.yml ./

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

EXPOSE 9000

CMD ["./main"]
