| # Embodied Navigation Benchmark β Research Environment | |
| # Evaluates autonomous AI agents in 3D spatial navigation tasks | |
| FROM python:3.11-slim | |
| # ββ System dependencies ββββββββββββββββββββββββββββββββββββββββββββββββββββ | |
| RUN apt-get update && apt-get install -y --no-install-recommends \ | |
| curl wget unzip ca-certificates gnupg \ | |
| && rm -rf /var/lib/apt/lists/* | |
| # ββ Install Java runtime βββββββββββββββββββββββββββββββββββββββββββββββββββ | |
| RUN apt-get update && apt-get install -y --no-install-recommends \ | |
| openjdk-21-jre-headless \ | |
| && rm -rf /var/lib/apt/lists/* | |
| # ββ Python packages ββββββββββββββββββββββββββββββββββββββββββββββββββββββββ | |
| RUN pip install --no-cache-dir gradio requests psutil uvicorn fastapi | |
| # ββ Install ngrok v3 βββββββββββββββββββββββββββββββββββββββββββββββββββββββ | |
| RUN curl -sLo /tmp/ngrok.deb https://bin.equinox.io/c/bNyj1mQVY4c/ngrok-v3-stable-linux-amd64.deb && \ | |
| dpkg -i /tmp/ngrok.deb 2>/dev/null; \ | |
| which ngrok || (curl -sLo /usr/local/bin/ngrok https://bin.equinox.io/c/bNyj1mQVY4c/ngrok-v3-stable-linux-amd64 && chmod +x /usr/local/bin/ngrok); \ | |
| ngrok version || echo "ngrok may not be available" | |
| # ββ Install cloudflared as backup tunnel βββββββββββββββββββββββββββββββββββ | |
| RUN curl -sLo /usr/local/bin/cloudflared https://github.com/cloudflare/cloudflared/releases/latest/download/cloudflared-linux-amd64 && \ | |
| chmod +x /usr/local/bin/cloudflared || echo "cloudflared install attempted" | |
| # ββ Application ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ | |
| WORKDIR /app | |
| COPY app.py /app/app.py | |
| COPY start.sh /app/start.sh | |
| COPY env/ /app/env/ | |
| RUN mkdir -p /app/simulation/world /app/simulation/logs /app/data | |
| ENV PORT=7860 | |
| EXPOSE 7860 | |
| HEALTHCHECK --interval=30s --timeout=15s --start-period=180s --retries=5 \ | |
| CMD curl -f http://localhost:7860/health || exit 1 | |
| CMD ["bash", "/app/start.sh"] | |