# syntax=docker/dockerfile:1.7 FROM ghcr.io/astral-sh/uv:0.11.6 AS uv FROM python:3.13.5-slim-bookworm ENV PYTHONDONTWRITEBYTECODE=1 \ PYTHONUNBUFFERED=1 \ PLAYWRIGHT_BROWSERS_PATH=/ms-playwright \ UV_COMPILE_BYTECODE=1 \ UV_LINK_MODE=copy COPY --from=uv /uv /uvx /bin/ WORKDIR /app COPY pyproject.toml uv.lock ./ RUN uv sync --frozen --no-install-project --no-dev --group runtime --group ml \ && uv run --frozen --no-dev --group runtime --group ml \ playwright install --with-deps chromium \ && chmod -R a+rX /ms-playwright COPY --chown=10001:10001 . . RUN mkdir -p /app/data /app/config \ && chown -R 10001:10001 /app/data /app/config USER 10001:10001 EXPOSE 3088 HEALTHCHECK --interval=30s --timeout=5s --start-period=30s --retries=3 \ CMD ["/app/.venv/bin/python", "-c", "import urllib.request; urllib.request.urlopen('http://127.0.0.1:3088/health/live', timeout=3)"] CMD ["/app/.venv/bin/python", "-m", "uvicorn", "dashboard.server:app", "--host", "0.0.0.0", "--port", "3088"]