RonyForAI/Mirage_DB_RL
0
1# Mirage_RL — Production Query Optimizer Environment2# Root-level Dockerfile for Hugging Face Spaces deployment.3# Delegates to the build logic defined in server/Dockerfile.4 5ARG BASE_IMAGE=ghcr.io/meta-pytorch/openenv-base:latest6FROM ${BASE_IMAGE} AS builder7 8WORKDIR /home/user/app9 10RUN apt-get update && \11 apt-get install -y --no-install-recommends git && \12 rm -rf /var/lib/apt/lists/*13 14ARG BUILD_MODE=in-repo15ARG ENV_NAME=Mirage_RL16 17# Copy full project context18COPY . /home/user/app/env19WORKDIR /home/user/app/env20 21# Ensure uv is available22RUN if ! command -v uv >/dev/null 2>&1; then \23 curl -LsSf https://astral.sh/uv/install.sh | sh && \24 mv /root/.local/bin/uv /usr/local/bin/uv && \25 mv /root/.local/bin/uvx /usr/local/bin/uvx; \26 fi27 28# Install dependencies29RUN --mount=type=cache,target=/root/.cache/uv \30 uv sync --no-install-project --no-editable31 32RUN --mount=type=cache,target=/root/.cache/uv \33 uv sync --no-editable34 35# ── Runtime stage ─────────────────────────────────────────────────────────────36FROM ${BASE_IMAGE}37 38# Add non-root user required by Hugging Face Spaces39RUN useradd -m -u 1000 user40USER user41ENV HOME=/home/user \42 PATH=/home/user/.local/bin:$PATH43 44WORKDIR $HOME/app45 46COPY --from=builder --chown=user:user /home/user/app/env/.venv $HOME/app/.venv47COPY --from=builder --chown=user:user /home/user/app/env $HOME/app/env48 49ENV PATH="$HOME/app/.venv/bin:$PATH"50ENV PYTHONPATH="$HOME/app/env:$PYTHONPATH"51 52HEALTHCHECK --interval=30s --timeout=5s --start-period=10s --retries=3 \53 CMD curl -f http://localhost:8000/health || exit 154 55CMD ["sh", "-c", "cd $HOME/app/env && uvicorn server.app:app --host 0.0.0.0 --port 8000"]56 