# 构建阶段(使用完整 Debian 镜像,内置 gcc,避免 alpine apk 问题) FROM golang:1.25 AS builder WORKDIR /app COPY go.mod go.sum ./ RUN go mod download COPY . . RUN CGO_ENABLED=1 GOOS=linux go build -o proxy-pool . # 下载 sing-box 二进制 ARG SINGBOX_VERSION=1.13.5 RUN ARCH=$(case "$(dpkg --print-architecture)" in amd64) echo "amd64";; arm64) echo "arm64";; *) echo "amd64";; esac) && \ curl -fsSL "https://github.com/SagerNet/sing-box/releases/download/v${SINGBOX_VERSION}/sing-box-${SINGBOX_VERSION}-linux-${ARCH}.tar.gz" \ -o /tmp/sing-box.tar.gz && \ tar -xzf /tmp/sing-box.tar.gz -C /tmp && \ cp /tmp/sing-box-${SINGBOX_VERSION}-linux-${ARCH}/sing-box /app/sing-box && \ chmod +x /app/sing-box && \ rm -rf /tmp/sing-box* # 运行阶段(使用轻量 debian-slim) FROM debian:bookworm-slim RUN apt-get update && apt-get install -y --no-install-recommends \ ca-certificates tzdata curl && \ rm -rf /var/lib/apt/lists/* ENV TZ=Asia/Shanghai WORKDIR /app COPY --from=builder /app/proxy-pool . COPY --from=builder /app/sing-box /usr/local/bin/sing-box EXPOSE 7776 7777 7778 7779 7780 CMD ["./proxy-pool"]