FROM node:20-slim # Zelin v31.0 - Perfect Survivor (Rich Perception, Pre-seeded Skills, Benchmark System) # ARG forces Docker cache invalidation on every version bump ARG CACHEBUST=v36.0.0 RUN echo "Building v36.0 LIBRE - 100% AI-driven (cachebust: $CACHEBUST)" RUN apt-get update && apt-get install -y --no-install-recommends \ openjdk-17-jre-headless curl wget python3 python3-pip ca-certificates unzip \ && rm -rf /var/lib/apt/lists/* RUN pip3 install fastapi uvicorn python-multipart --break-system-packages 2>/dev/null || true RUN ARCH=$(dpkg --print-architecture) && \ BORE_ARCH="x86_64" && \ if [ "$ARCH" = "arm64" ] || [ "$ARCH" = "aarch64" ]; then BORE_ARCH="aarch64"; fi && \ curl -fSL "https://github.com/ekzhang/bore/releases/download/v0.5.1/bore-v0.5.1-${BORE_ARCH}-unknown-linux-musl.tar.gz" -o /tmp/bore.tar.gz && \ tar xzf /tmp/bore.tar.gz -C /tmp/ && \ mv /tmp/bore /usr/local/bin/bore && chmod +x /usr/local/bin/bore && \ rm -f /tmp/bore.tar.gz # Pre-compiled NoInvalidKick (Java 17 / class v61) COPY NoInvalidKick.jar /app/NoInvalidKick.jar RUN echo "[Build] NoInvalidKick source JAR: $(ls -la /app/NoInvalidKick.jar | awk '{print $5}') bytes" && \ mkdir -p /app/server/plugins # Download ViaVersion plugins RUN wget -qO /app/server/plugins/ViaVersion.jar "https://github.com/ViaVersion/ViaVersion/releases/download/4.9.2/ViaVersion-4.9.2.jar" 2>/dev/null || echo "ViaVersion failed" && \ wget -qO /app/server/plugins/ViaBackwards.jar "https://github.com/ViaVersion/ViaBackwards/releases/download/4.9.1/ViaBackwards-4.9.1.jar" 2>/dev/null || echo "ViaBackwards failed" && \ wget -qO /app/server/plugins/ViaRewind.jar "https://github.com/ViaVersion/ViaRewind/releases/download/3.0.5/ViaRewind-3.0.5.jar" 2>/dev/null || echo "ViaRewind failed" && \ echo "[Build] All build plugins:" && ls -la /app/server/plugins/ ENV NODE_OPTIONS="--max-old-space-size=2048" UV_THREADPOOL_SIZE=8 WORKDIR /app COPY package.json package-lock.json* ./ RUN npm install --production 2>&1 | tail -3 || npm install --legacy-peer-deps 2>&1 | tail -3 || true COPY . . RUN mkdir -p /app/server/plugins /app/logs && \ echo "[Build] bot.js version check:" && head -3 /app/bot.js && \ echo "[Build] v31 architecture check..." && grep -c 'PERFECT SURVIVOR' /app/bot.js || echo "WARNING: v31 marker not found in bot.js!" ENV PORT=7860 NODE_ENV=production EXPOSE 7860 HEALTHCHECK --interval=30s --timeout=10s --start-period=180s --retries=5 \ CMD curl -f http://localhost:7860/health || exit 1 CMD ["bash", "/app/start.sh"]