2026-06-18 11:19:24 -04:00
|
|
|
# Backend Dockerfile for FastAPI with Python 3.14
|
2026-07-13 11:16:16 -04:00
|
|
|
FROM python:3.14-slim AS dependencies
|
2025-10-18 09:14:10 -04:00
|
|
|
|
|
|
|
|
WORKDIR /app
|
|
|
|
|
|
|
|
|
|
COPY --from=ghcr.io/astral-sh/uv:latest /uv /bin/uv
|
|
|
|
|
|
|
|
|
|
ENV VIRTUAL_ENV=/app/.venv
|
|
|
|
|
ENV PATH="$VIRTUAL_ENV/bin:$PATH"
|
|
|
|
|
|
|
|
|
|
COPY backend/pyproject.toml backend/uv.lock* ./
|
2026-06-22 12:45:20 -04:00
|
|
|
# Hatchling resolves the readme path ../README.md relative to the backend
|
|
|
|
|
# package root (/app). Create a stub so metadata validation succeeds without
|
|
|
|
|
# requiring the file to pass through .dockerignore.
|
|
|
|
|
RUN echo '# plex-playlist' > /README.md
|
2026-07-13 11:16:16 -04:00
|
|
|
RUN uv venv "$VIRTUAL_ENV" && uv sync --frozen --no-dev
|
2025-10-18 09:14:10 -04:00
|
|
|
|
2026-07-13 11:16:16 -04:00
|
|
|
FROM python:3.14-slim AS runtime
|
2025-10-18 09:14:10 -04:00
|
|
|
|
2026-07-13 11:16:16 -04:00
|
|
|
WORKDIR /app
|
|
|
|
|
|
|
|
|
|
ENV VIRTUAL_ENV=/app/.venv
|
|
|
|
|
ENV PATH="$VIRTUAL_ENV/bin:$PATH"
|
|
|
|
|
|
|
|
|
|
COPY --from=dependencies /app/.venv /app/.venv
|
|
|
|
|
COPY backend/src ./src
|
2025-10-18 09:14:10 -04:00
|
|
|
|
|
|
|
|
EXPOSE 8000
|
|
|
|
|
|
2026-07-05 22:48:57 -04:00
|
|
|
CMD ["uvicorn", "backend.main:app", "--app-dir", "/app/src", "--host", "0.0.0.0", "--port", "8000"]
|