# Copyright (c) Meta Platforms, Inc. and affiliates. # All rights reserved. # # This source code is licensed under the BSD-style license found in the # LICENSE file in the root directory of this source tree. # Dockerfile for Doom Environment # This image provides ViZDoom for visual RL research with OpenEnv # # This Dockerfile works for both local builds and HuggingFace Spaces deployment: # - Local build from project root: docker build -t doom-env:latest -f src/envs/doom_env/server/Dockerfile src/envs/doom_env # - HuggingFace: Automatically deployed via `openenv push` # # Run with web interface: # docker run -p 8000:8000 -e ENABLE_WEB_INTERFACE=true doom-env:latest FROM python:3.11-slim # Set metadata LABEL maintainer="OpenEnv Team" LABEL description="Doom RL Environment with ViZDoom and OpenEnv" LABEL org.opencontainers.image.source="https://github.com/meta-pytorch/OpenEnv" # Set working directory WORKDIR /app/env # Install system dependencies # - curl: for healthcheck # - ViZDoom build dependencies: build-essential, cmake, boost, SDL2, etc. RUN apt-get update && \ apt-get install -y --no-install-recommends \ curl \ ca-certificates \ build-essential \ cmake \ libboost-all-dev \ libsdl2-dev \ libfreetype6-dev \ libgl1-mesa-dev \ libglu1-mesa-dev \ libpng-dev \ libjpeg-dev \ libbz2-dev \ libfluidsynth-dev \ libgme-dev \ libopenal-dev \ zlib1g-dev \ timidity \ tar \ nasm && \ rm -rf /var/lib/apt/lists/* # Set environment variables ENV PYTHONUNBUFFERED=1 # Copy environment files COPY . . # Install doom_env and all its dependencies from pyproject.toml # This includes: openenv-core, fastapi, uvicorn, pydantic, requests, vizdoom, numpy RUN pip install --no-cache-dir -e . # Doom-specific environment variables (can be overridden at runtime) ENV DOOM_SCENARIO=basic ENV DOOM_SCREEN_RESOLUTION=RES_160X120 ENV DOOM_SCREEN_FORMAT=RGB24 ENV DOOM_WINDOW_VISIBLE=false # Enable web interface by default (set to false to disable) ENV ENABLE_WEB_INTERFACE=true # Expose port EXPOSE 8000 # Health check HEALTHCHECK --interval=30s --timeout=3s --start-period=5s --retries=3 \ CMD curl -f http://localhost:8000/health || exit 1 # Run the FastAPI server # Web interface will be available at /web if ENABLE_WEB_INTERFACE=true # API documentation available at /docs CMD ["uvicorn", "doom_env.server.app:app", "--host", "0.0.0.0", "--port", "8000"]