# PortSimEnv v1: OpenEnv server + 3D viewer. Build context: this folder (core/, openenv/, tasks/ side by side). FROM python:3.12-slim ENV PYTHONUNBUFFERED=1 PIP_NO_CACHE_DIR=1 HOME=/home/user PORT=8000 ENABLE_WEB_INTERFACE=true \ BERTH_TASKS_DIR=/app/tasks/dock-v1-eval:/app/tasks/dock-v1-train BERTH_RUNS_DIR=/app/runs \ MAX_CONCURRENT_ENVS=256 WORKDIR /app COPY core /app/core COPY openenv /app/openenv COPY tasks /app/tasks COPY oracle /app/oracle COPY fetch_assets.py /app/fetch_assets.py RUN pip install /app/core /app/openenv && python /app/fetch_assets.py \ && mkdir -p /app/runs && useradd --create-home --uid 1000 user && chown -R user:user /app USER user EXPOSE 8000 HEALTHCHECK --interval=30s --timeout=5s --start-period=30s \ CMD python -c "import urllib.request; urllib.request.urlopen('http://127.0.0.1:8000/health')" CMD ["sh", "-c", "uvicorn berth_openenv.server:app --host 0.0.0.0 --port ${PORT:-8000} --ws-ping-interval 60 --ws-ping-timeout 600"]