- 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
434 B
Docker
24 lines
434 B
Docker
FROM node:22-alpine AS builder
|
|
WORKDIR /app
|
|
|
|
COPY package.json package-lock.json* ./
|
|
RUN npm ci
|
|
|
|
COPY . .
|
|
|
|
ENV NODE_ENV=production
|
|
RUN npm run build
|
|
|
|
# --- Runner stage ---
|
|
FROM node:22-alpine AS runner
|
|
WORKDIR /app
|
|
|
|
ENV NODE_ENV=production
|
|
ENV PORT=4000
|
|
|
|
COPY --from=builder /app/.next/standalone ./
|
|
COPY --from=builder /app/.next/static ./.next/static
|
|
COPY --from=builder /app/public ./public
|
|
|
|
EXPOSE 4000
|
|
CMD ["node", "server.js"]
|