services: # Instance Grav de référence (site "Figures Libres") servant de source de # contenu pour le développement du générateur de portfolios. # Ce n'est PAS l'app à développer : c'est le CMS d'exemple, en lecture. grav-reference: build: context: ./docker/grav args: PUID: "1000" PGID: "1000" container_name: figureslibres-grav-ref restart: unless-stopped ports: - "8089:80" volumes: - ./grav-reference:/var/www/html # Générateur de portfolios PDF (app Nuxt) — voir docs/spec-generateur-portfolios.md. # Tout tourne dans ce conteneur : Node, build Nuxt, Playwright/Chromium, Ghostscript. generator: build: # L'app est un dépôt autonome cloné dans ./generator (Dockerfile inclus). context: ./generator image: figureslibres-portfolio-generator container_name: figureslibres-portfolio-generator restart: unless-stopped user: "1000:1000" working_dir: /app command: npm run dev environment: HOME: /tmp NUXT_SESSION_SECRET: ${SESSION_SECRET:-dev-secret-figures-libres} NUXT_PORTFOLIO_PASSWORD: ${PORTFOLIO_PASSWORD:-figureslibres} NUXT_INTERNAL_TOKEN: ${INTERNAL_TOKEN:-dev-internal-token} NUXT_CONTENT_SOURCE: ${CONTENT_SOURCE:-dev} NUXT_CONTENT_DIR: /content/02.projets NUXT_DATA_DIR: /app/data # Mode prod (voir docker-compose.prod.yml) : synchro rsync/SSH NUXT_SYNC_REMOTE: ${SYNC_REMOTE:-} NUXT_SYNC_SSH_KEY: ${SYNC_SSH_KEY:-} ports: - "8091:3000" volumes: - ./generator:/app # Contenu Grav monté en LECTURE SEULE (contrainte ferme, §18). - ./grav-reference/user/pages/02.projets:/content/02.projets:ro