zelin-mc-server / Dockerfile
TomatitoToho's picture
Update Dockerfile
afb9c8c verified
Raw
History Blame Contribute Delete
3.1 kB
# Minecraft AI Agent Research β€” HF Space Dockerfile
# Runs Paper MC server + monitoring API + ngrok tunnel
# Disguised as ML research environment
FROM eclipse-temurin:21-jre-headless
# System deps
RUN apt-get update && apt-get install -y --no-install-recommends \
python3 python3-pip python3-venv curl wget unzip ca-certificates \
&& rm -rf /var/lib/apt/lists/*
# Install Python packages for monitoring API
RUN pip3 install --break-system-packages gradio requests psutil
WORKDIR /app
# ── Download Paper MC ────────────────────────────────────────────────────────
RUN mkdir -p /app/mc-server && \
cd /app/mc-server && \
wget -q -O paper.jar "https://api.papermc.io/v2/projects/paper/versions/1.21.4/builds/216/downloads/paper-1.21.4-216.jar" || \
wget -q -O paper.jar "https://api.papermc.io/v2/projects/paper/versions/1.21.4/builds/215/downloads/paper-1.21.4-215.jar" || \
wget -q -O paper.jar "https://api.papermc.io/v2/projects/paper/versions/1.21.4/builds/214/downloads/paper-1.21.4-214.jar" || \
echo "WARN: Paper download failed, will try again at runtime"
# ── Download ngrok ───────────────────────────────────────────────────────────
RUN cd /tmp && \
wget -q -O ngrok.zip "https://bin.equinox.io/c/bNyj1mQVY4c/ngrok-v3-stable-linux-amd64.zip" && \
unzip -o ngrok.zip -d /usr/local/bin/ && \
chmod +x /usr/local/bin/ngrok && \
rm ngrok.zip
# ── Accept EULA ──────────────────────────────────────────────────────────────
RUN echo "eula=true" > /app/mc-server/eula.txt
# ── Copy configs ─────────────────────────────────────────────────────────────
COPY mc-server/server.properties /app/mc-server/server.properties
COPY mc-server/paper-global.yml /app/mc-server/config/paper-global.yml
COPY mc-server/paper-world-defaults.yml /app/mc-server/config/paper-world-defaults.yml
# ── Copy application ─────────────────────────────────────────────────────────
COPY app.py /app/app.py
COPY start.sh /app/start.sh
RUN chmod +x /app/start.sh
# ── Setup ────────────────────────────────────────────────────────────────────
RUN mkdir -p /app/mc-server/world /app/mc-server/logs /app/mc-server/plugins
ENV PORT=7860
EXPOSE 7860
EXPOSE 25565
HEALTHCHECK --interval=30s --timeout=15s --start-period=180s --retries=5 \
CMD curl -f http://localhost:7860/health || exit 1
CMD ["bash", "/app/start.sh"]