FROM ghcr.io/astral-sh/uv:0.10.6 AS uv FROM python:3.12-slim COPY --from=uv /uv /usr/local/bin/uv WORKDIR /app ENV PYTHONUNBUFFERED=1 PATH=/app/.venv/bin:$PATH UV_COMPILE_BYTECODE=1 COPY pyproject.toml uv.lock ./ RUN uv sync --locked --no-dev --no-install-project COPY app ./app COPY garmin_sync ./garmin_sync COPY migrations ./migrations COPY Procfile app.json ./ RUN useradd --uid 1000 --create-home stride && mkdir /storage && chown stride:stride /storage USER stride EXPOSE 8000 CMD ["gunicorn", "--bind", "0.0.0.0:8000", "--workers", "2", "--timeout", "120", "app:create_app()"]