# ========================== # 构建阶段 # ========================== FROM rust:1.90.0-trixie AS builder WORKDIR /build COPY . . RUN apt-get update && apt-get install -y gcc && \ gcc -std=c99 -shared -fPIC -o libsymbols.so symbols.c && \ cargo build --release # ========================== # 运行阶段(Hugging Face) # ========================== FROM debian:trixie-slim WORKDIR /app # 安装必要依赖 RUN apt-get update && apt-get install -y --no-install-recommends \ nodejs npm ca-certificates wget patchelf xz-utils zstd binutils libc6 libgcc1 libstdc++6 \ && rm -rf /var/lib/apt/lists/* # ---------- 自动提取 wrapper.node ---------- RUN wget -O linuxqq.deb https://dldir1v6.qq.com/qqfile/qq/QQNT/Linux/QQ_3.2.19_250904_amd64_01.deb && \ ar x linuxqq.deb && \ DATA_TAR=$(ls data.tar.*) && \ echo "Extracting $DATA_TAR ..." && \ tar --use-compress-program=unzstd -xvf "$DATA_TAR" ./opt/QQ/resources/app/wrapper.node -O > wrapper.node 2>/dev/null || \ tar -xJf "$DATA_TAR" ./opt/QQ/resources/app/wrapper.node -O > wrapper.node && \ rm -f linuxqq.deb data.tar.* control.tar.* debian-binary && \ patchelf \ --remove-needed libbugly.so \ --remove-needed libX11.so.6 \ --remove-needed libX11-xcb.so.1 \ --remove-needed libXext.so.6 \ --remove-needed libvips-cpp.so.42 \ --add-needed libstdc++.so.6 \ --add-needed libsymbols.so \ wrapper.node # ---------- 复制构建产物 ---------- COPY --from=builder /build/libsymbols.so /usr/local/lib/libsymbols.so COPY --from=builder /build/target/release/sign /usr/local/bin/sign COPY sign.config.toml /app/ # ---------- 配置 ---------- RUN sed -i 's/127\.0\.0\.1/0.0.0.0/g' /app/sign.config.toml || true && \ sed -i 's/8080/7860/g' /app/sign.config.toml || true && \ ldconfig EXPOSE 7860 ENTRYPOINT ["/bin/sh", "-c", "echo '🚀 Sign Server started successfully on 0.0.0.0:7860 with patched wrapper.node'; exec /usr/local/bin/sign"]