Adds standard JWT claims (audience and issuer) to access tokens and updates config for these fields. Refactors multiplayer room chat channel logic to ensure reliable user join/leave with retry mechanisms, improves error handling and cleanup, and ensures host is correctly added as a participant. Updates Docker entrypoint for better compatibility and connection handling, modifies Docker Compose and Nginx config for improved deployment and proxy header forwarding.
52 lines
1.4 KiB
Plaintext
52 lines
1.4 KiB
Plaintext
FROM ghcr.io/astral-sh/uv:python3.13-bookworm-slim AS builder
|
|
WORKDIR /app
|
|
|
|
RUN apt-get update \
|
|
&& apt-get install -y gcc pkg-config default-libmysqlclient-dev git \
|
|
&& rm -rf /var/lib/apt/lists/* \
|
|
&& curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y
|
|
|
|
ENV PATH="/root/.cargo/bin:${PATH}" \
|
|
PYTHONUNBUFFERED=1 PYTHONDONTWRITEBYTECODE=1 UV_PROJECT_ENVIRONMENT=/app/.venv
|
|
|
|
ENV PYTHONUNBUFFERED=1
|
|
ENV PYTHONDONTWRITEBYTECODE=1
|
|
ENV UV_PROJECT_ENVIRONMENT=/app/.venv
|
|
|
|
COPY pyproject.toml uv.lock ./
|
|
COPY packages/ ./packages/
|
|
|
|
RUN uv sync --frozen --no-dev
|
|
RUN uv pip install git+https://github.com/ppy-sb/rosu-pp-py.git
|
|
|
|
COPY . .
|
|
|
|
# ---
|
|
|
|
FROM ghcr.io/astral-sh/uv:python3.13-bookworm-slim
|
|
WORKDIR /app
|
|
|
|
RUN apt-get update \
|
|
&& apt-get install -y curl netcat-openbsd \
|
|
&& rm -rf /var/lib/apt/lists/*
|
|
|
|
ENV PATH="/app/.venv/bin:${PATH}" \
|
|
PYTHONUNBUFFERED=1 PYTHONDONTWRITEBYTECODE=1
|
|
|
|
COPY --from=builder /app/.venv /app/.venv
|
|
COPY --from=builder /app /app
|
|
|
|
RUN mkdir -p /app/logs
|
|
VOLUME ["/app/logs"]
|
|
|
|
COPY docker-entrypoint.sh /app/docker-entrypoint.sh
|
|
RUN sed -i 's/\r$//' /app/docker-entrypoint.sh && chmod +x /app/docker-entrypoint.sh
|
|
|
|
EXPOSE 8000
|
|
|
|
HEALTHCHECK --interval=30s --timeout=10s --start-period=5s --retries=3 \
|
|
CMD curl -f http://localhost:8000/health || exit 1
|
|
|
|
ENTRYPOINT ["/app/docker-entrypoint.sh"]
|
|
CMD ["uv", "run", "--no-sync", "uvicorn", "main:app", "--host", "0.0.0.0", "--port", "8000"]
|