# ── Backend: FastAPI + RL Pipeline ── FROM python:3.11-slim AS backend WORKDIR /app # System deps for numpy/scipy/torch RUN apt-get update && apt-get install -y --no-install-recommends \ build-essential gfortran libopenblas-dev \ && rm -rf /var/lib/apt/lists/* # Install Python dependencies COPY pyproject.toml ./ # Install PyTorch CPU-only first (from the dedicated index) RUN pip install --no-cache-dir \ torch --index-url https://download.pytorch.org/whl/cpu # Install everything else from default PyPI RUN pip install --no-cache-dir \ uvicorn fastapi \ openenv-core pydantic openai \ stable-baselines3 \ streamlit plotly \ pandas numpy matplotlib \ cvxpy ecos \ pyarrow fastexcel polars openpyxl # Copy application code COPY server/ ./server/ COPY models.py openenv.yaml baseline.py main.py battery.py config.json ./ COPY rl_env.py rl_evaluator.py ./ COPY rl/ ./rl/ COPY sim/ ./sim/ COPY src/ ./src/ COPY twin/ ./twin/ COPY data/ ./data/ COPY models/ ./models/ COPY dashboards/ ./dashboards/ # Create dirs that the app expects RUN mkdir -p static plots EXPOSE 8000 ENV ENABLE_WEB_INTERFACE=true CMD ["uvicorn", "server.app:app", "--host", "0.0.0.0", "--port", "8000"]