# VLN-CE Environment Server Docker Compose # Based on OpenPI docker patterns. # # Run with: # docker compose -f docker/compose.yml up --build # # Or with custom args: # SERVER_ARGS="--port 8765 --split val_unseen" docker compose -f docker/compose.yml up --build services: vlnce_server: image: vlnce_server build: context: .. dockerfile: docker/serve_env.Dockerfile init: true tty: true network_mode: host privileged: true # Mount volumes for code and data volumes: # Code mount for development (changes reflect immediately) - ..:/app # Data volumes (read-only) - scenes, datasets, models - ${VLNCE_DATA_HOME:-/data/ws_vln/VLN-CE/data}:/vlnce_data:ro # Mount host's NVIDIA EGL vendor file for GPU rendering - /usr/share/glvnd/egl_vendor.d/10_nvidia.json:/usr/share/glvnd/egl_vendor.d/10_nvidia.json:ro environment: # Server arguments (port, split, sensors, etc.) - SERVER_ARGS=${SERVER_ARGS:---port 8765 --split val_unseen} # Data home inside container - VLNCE_DATA_HOME=/vlnce_data # Quiet logging for habitat-sim - HABITAT_SIM_LOG=quiet - MAGNUM_LOG=quiet # Python path - PYTHONPATH=/app:/app/vlnce_server # GPU/EGL configuration for headless rendering (nvidia-container-toolkit) - NVIDIA_VISIBLE_DEVICES=all - NVIDIA_DRIVER_CAPABILITIES=all - HABITAT_SIM_GPU_DEVICE_ID=0 - CUDA_VISIBLE_DEVICES=0 # EGL headless rendering - force NVIDIA EGL - DISPLAY= - PYOPENGL_PLATFORM=egl - __NV_PRIME_RENDER_OFFLOAD=1 - __GLX_VENDOR_LIBRARY_NAME=nvidia - __EGL_VENDOR_LIBRARY_FILENAMES=/usr/share/glvnd/egl_vendor.d/10_nvidia.json - EGL_PLATFORM=device # GPU access using nvidia runtime runtime: nvidia deploy: resources: reservations: devices: - driver: nvidia count: 1 capabilities: [gpu, compute, utility, graphics] # Device access for EGL/OpenGL rendering devices: - /dev/dri:/dev/dri