# 构建阶段 FROM golang:1.26-alpine AS builder RUN apk add --no-cache git WORKDIR /app # 克隆官方仓库(获取完整源码) RUN git clone https://github.com/router-for-me/CLIProxyAPI.git . && \ go mod download # 编译(使用官方入口 ./cmd/server) ARG VERSION=dev ARG COMMIT=none ARG BUILD_DATE=unknown RUN CGO_ENABLED=0 GOOS=linux go build -ldflags="-s -w -X 'main.Version=${VERSION}' -X 'main.Commit=${COMMIT}' -X 'main.BuildDate=${BUILD_DATE}'" -o ./CLIProxyAPI ./cmd/server/ # 运行阶段 FROM alpine:3.22.0 RUN apk add --no-cache tzdata # 为 HuggingFace 只读环境创建可写目录 RUN mkdir -p /tmp/cliproxy_data # 设置环境变量(实际值由 HuggingFace Settings 注入) ENV MANAGEMENT_STATIC_PATH="/tmp/cliproxy_data/static" \ PGSTORE_LOCAL_PATH="/tmp/cliproxy_data/cache.db" \ TZ=Asia/Shanghai RUN mkdir /CLIProxyAPI # 复制编译好的二进制文件 COPY --from=builder /app/CLIProxyAPI /CLIProxyAPI/CLIProxyAPI # 复制示例配置文件(可选,实际配置通过 WebUI 或数据库) COPY --from=builder /app/config.example.yaml /CLIProxyAPI/config.example.yaml WORKDIR /CLIProxyAPI EXPOSE 8317 # 设置时区 RUN cp /usr/share/zoneinfo/${TZ} /etc/localtime && echo "${TZ}" > /etc/timezone CMD ["./CLIProxyAPI"]