- Fix PPTX/PDF export: Puppeteer URL port mismatch (80 → 3000) - Fix backend export_utils to use NEXT_INTERNAL_URL env var - Add Chromium to frontend Dockerfile for Docker-based export - Fix slide edit socket hang up with asyncio.wait_for() timeouts - Add FastAPI StaticFiles mounts for /static and /app_data - Add Next.js rewrite for /static/ to proxy to backend - Show template thumbnail in master decks admin page - Add error logging to ReviewWorkflow component - Add Docker env vars for web service (APP_DATA_DIRECTORY, app_data volume) - Add project README in English Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
28 lines
767 B
Docker
28 lines
767 B
Docker
FROM node:20-alpine AS builder
|
|
|
|
WORKDIR /app
|
|
COPY package.json package-lock.json ./
|
|
RUN npm ci
|
|
COPY . .
|
|
ENV API_INTERNAL_URL=http://api:8000
|
|
RUN npm run build
|
|
|
|
FROM node:20-alpine
|
|
|
|
# Install Chromium for Puppeteer (used by PDF/PPTX export)
|
|
RUN apk add --no-cache chromium nss freetype harfbuzz ca-certificates ttf-freefont
|
|
|
|
ENV PUPPETEER_EXECUTABLE_PATH=/usr/bin/chromium-browser
|
|
ENV PUPPETEER_SKIP_CHROMIUM_DOWNLOAD=true
|
|
ENV APP_DATA_DIRECTORY=/app_data
|
|
ENV TEMP_DIRECTORY=/tmp/deckforge
|
|
|
|
WORKDIR /app
|
|
COPY --from=builder /app/.next-build ./.next-build
|
|
COPY --from=builder /app/node_modules ./node_modules
|
|
COPY --from=builder /app/package.json ./
|
|
COPY --from=builder /app/public ./public
|
|
COPY --from=builder /app/next.config.mjs ./
|
|
|
|
EXPOSE 3000
|
|
CMD ["npm", "start"]
|