# Catalog API - Dockerfile FROM python:3.11.12-slim AS builder # Install uv COPY --from=ghcr.io/astral-sh/uv:0.10 /uv /usr/local/bin/uv WORKDIR /app # Copy dependency files COPY pyproject.toml ./ # Copy source code COPY src/ ./src/ # Install dependencies (no lockfile yet) RUN uv sync --no-dev # Final stage FROM python:3.11.12-slim WORKDIR /app # Copy virtual environment from builder COPY --from=builder /app/.venv /app/.venv COPY src/ ./src/ # Set environment ENV PATH="/app/.venv/bin:$PATH" ENV PYTHONUNBUFFERED=1 ENV CATALOG_HOST=0.0.0.0 ENV CATALOG_PORT=11000 HEALTHCHECK --interval=30s --timeout=10s --retries=3 \ CMD python -c "import urllib.request; import os; urllib.request.urlopen(f'http://localhost:{os.environ.get(\"CATALOG_PORT\", 11000)}/health')" || exit 1 EXPOSE 11000 CMD python -m uvicorn catalog_api.app:app --host 0.0.0.0 --port ${CATALOG_PORT}