rishithayanidhi/datacenter-cooling-optimization
0
1# Multi-stage build for OpenEnv Data Center Cooling Environment2# This Dockerfile is designed to run from the repo root3# Build: docker build -t datacenter-cooling:latest .4 5ARG BASE_IMAGE=ghcr.io/meta-pytorch/openenv-base:latest6FROM ${BASE_IMAGE} AS builder7 8WORKDIR /app9 10# Install build dependencies11RUN apt-get update && \12 apt-get install -y --no-install-recommends git && \13 rm -rf /var/lib/apt/lists/*14 15# Copy entire project16COPY . /app17 18# Ensure uv is available19RUN if ! command -v uv >/dev/null 2>&1; then \20 curl -LsSf https://astral.sh/uv/install.sh | sh && \21 mv /root/.local/bin/uv /usr/local/bin/uv && \22 mv /root/.local/bin/uvx /usr/local/bin/uvx; \23 fi24 25# Install dependencies from my_env26WORKDIR /app/my_env27 28# Create and use virtual environment29RUN python -m venv /app/venv30ENV PATH="/app/venv/bin:$PATH"31 32# Upgrade pip33RUN pip install --upgrade pip setuptools wheel34 35# Install requirements36RUN pip install -r /app/requirements-docker.txt37 38# Final runtime stage39FROM ${BASE_IMAGE}40 41WORKDIR /app42 43# Copy virtual environment from builder44COPY --from=builder /app/venv /app/venv45 46# Copy project code47COPY --from=builder /app /app48 49# Set PATH to use virtual environment50ENV PATH="/app/venv/bin:$PATH"51ENV PYTHONPATH="/app:$PYTHONPATH"52 53# Environment configuration54ENV TASK_TYPE=easy55ENV WORKERS=456ENV PORT=800057ENV HOST=0.0.0.058 59# Health check60HEALTHCHECK --interval=30s --timeout=3s --start-period=5s --retries=3 \61 CMD curl -f http://localhost:${PORT}/health || exit 162 63# Run FastAPI server64CMD ["sh", "-c", "uvicorn my_env.server.app:app --host ${HOST} --port ${PORT} --workers ${WORKERS}"]65 