# 前端构建阶段 FROM node:20-alpine AS frontend-builder WORKDIR /app/web # 复制前端依赖文件 COPY web/package*.json ./ # 安装依赖 RUN npm install --registry https://registry.npmmirror.com # 复制前端源代码 COPY web/ ./ # 构建前端 RUN npm run build # 后端构建阶段 - 使用 Debian 基础镜像 FROM golang:1.22-bookworm AS backend-builder # 安装 OpenCV、ONNX Runtime 和编译工具 RUN apt-get update && apt-get install -y --no-install-recommends \ gcc \ g++ \ libopencv-dev \ libopencv-dnn-dev \ pkg-config \ wget \ && rm -rf /var/lib/apt/lists/* # 安装 ONNX Runtime 1.18.0 (支持 IR version 10) RUN wget -q https://github.com/microsoft/onnxruntime/releases/download/v1.18.0/onnxruntime-linux-x64-1.18.0.tgz \ && tar -xzf onnxruntime-linux-x64-1.18.0.tgz \ && mv onnxruntime-linux-x64-1.18.0 /usr/local/onnxruntime \ && rm onnxruntime-linux-x64-1.18.0.tgz ENV ONNXRUNTIME_DIR=/usr/local/onnxruntime ENV PKG_CONFIG_PATH=/usr/lib/x86_64-linux-gnu/pkgconfig ENV CGO_ENABLED=1 WORKDIR /app # 复制源代码 COPY . . # 下载依赖 RUN go mod download # 构建 RUN PKG_CONFIG_PATH=/usr/lib/x86_64-linux-gnu/pkgconfig CGO_ENABLED=1 go build -ldflags="-s -w" -o anticaptcha ./cmd/server # 运行阶段 FROM debian:bookworm-slim # 安装运行时依赖 RUN apt-get update && apt-get install -y --no-install-recommends \ ca-certificates \ tzdata \ libopencv-core406 \ libopencv-imgproc406 \ libopencv-imgcodecs406 \ libopencv-dnn406 \ libopencv-calib3d406 \ libstdc++6 \ && rm -rf /var/lib/apt/lists/* # 复制 ONNX Runtime COPY --from=backend-builder /usr/local/onnxruntime/lib/libonnxruntime.so* /usr/lib/ WORKDIR /app # 复制二进制文件 COPY --from=backend-builder /app/anticaptcha . # 复制前端构建产物 COPY --from=frontend-builder /app/web/dist ./web/dist # 创建数据和模型目录(模型启动时自动下载) RUN mkdir -p /app/data /app/models ENV GIN_MODE=release ENV TZ=Asia/Shanghai ENV LD_LIBRARY_PATH=/usr/lib EXPOSE 6688 CMD ["./anticaptcha"]