- backend/Dockerfile: Python 3.13-slim with uv, ffmpeg, psycopg2 - frontend/Dockerfile: multi-stage Node 22 build with standalone output - docker-compose.yml: add backend/frontend services with named volumes - backend/.dockerignore, frontend/.dockerignore: exclude build artifacts - audio.py: write podcasts to PODCAST_DATA_DIR env var (default: conversations/) - background_tasks.py: handle .md files directly without LlamaParse - pyproject.toml: add python-pptx, weasyprint, matplotlib deps - page.tsx: add Markdown to supported file types hint - scripts/1_backup.sh: pg_dump + tar files + Docker volume backup - scripts/2_deploy.sh: full systemd→Docker migration with health checks - scripts/3_cleanup.sh: post-migration cleanup of build artifacts Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
24 lines
579 B
Docker
24 lines
579 B
Docker
FROM python:3.13-slim
|
|
|
|
# ffmpeg for audio processing + build deps for psycopg2
|
|
RUN apt-get update && apt-get install -y ffmpeg libpq-dev gcc && \
|
|
rm -rf /var/lib/apt/lists/*
|
|
|
|
# uv package manager
|
|
COPY --from=ghcr.io/astral-sh/uv:latest /uv /usr/local/bin/uv
|
|
|
|
WORKDIR /app
|
|
|
|
# Dependencies (cached separately from code)
|
|
COPY pyproject.toml uv.lock ./
|
|
RUN uv sync --frozen --no-dev
|
|
|
|
# Source code
|
|
COPY src/ ./src/
|
|
|
|
# Data directories
|
|
RUN mkdir -p conversations failed_uploads
|
|
|
|
EXPOSE 9000
|
|
|
|
CMD ["uv", "run", "uvicorn", "src.api.main:app", "--host", "0.0.0.0", "--port", "9000"]
|