Checkpoint: Le stockage PDF devient un volume Docker externe explicitement nommé, avec nocopy. Le conteneur refuse de démarrer si /app/storage n’est pas un montage inscriptible, et son healthcheck contrôle aussi ce montage. Les tests, TypeScript et build ont été validés.
All checks were successful
Validation applicative / TypeScript, tests et build (push) Successful in 3m20s
All checks were successful
Validation applicative / TypeScript, tests et build (push) Successful in 3m20s
This commit is contained in:
@@ -40,6 +40,8 @@ services:
|
||||
JWT_SECRET: demat-facturation-jwt-secret-recette-2026
|
||||
MISTRAL_API_KEY: ${MISTRAL_API_KEY:-}
|
||||
UPLOAD_DIR: /app/uploads
|
||||
# Chemin unique utilisé par le serveur et vérifié au démarrage.
|
||||
STORAGE_BASE_PATH: /app/storage
|
||||
# Manus OAuth (optionnel en recette)
|
||||
VITE_APP_ID: ${VITE_APP_ID:-demat-facturation-recette}
|
||||
OAUTH_SERVER_URL: ${OAUTH_SERVER_URL:-}
|
||||
@@ -49,8 +51,12 @@ services:
|
||||
volumes:
|
||||
- demat_facturation_uploads:/app/uploads
|
||||
# Les factures source et leurs métadonnées sont servies sous /storage.
|
||||
# Ce volume doit rester monté à chaque reconstruction du conteneur.
|
||||
- demat_facturation_storage:/app/storage
|
||||
# Il est externe et n'est donc jamais recréé ni supprimé par Compose.
|
||||
- type: volume
|
||||
source: demat_facturation_storage
|
||||
target: /app/storage
|
||||
volume:
|
||||
nocopy: true
|
||||
networks:
|
||||
- demat-facturation-internal
|
||||
- web
|
||||
@@ -61,7 +67,7 @@ services:
|
||||
- "traefik.http.routers.demat-facturation.tls.certresolver=letsencrypt"
|
||||
- "traefik.http.services.demat-facturation.loadbalancer.server.port=3000"
|
||||
healthcheck:
|
||||
test: ["CMD", "curl", "-f", "http://localhost:3000/api/health"]
|
||||
test: ["CMD-SHELL", "grep -qs ' /app/storage ' /proc/mounts && test -w /app/storage && curl -fsS http://localhost:3000/api/health"]
|
||||
interval: 30s
|
||||
timeout: 10s
|
||||
retries: 3
|
||||
@@ -73,7 +79,8 @@ volumes:
|
||||
demat_facturation_uploads:
|
||||
driver: local
|
||||
demat_facturation_storage:
|
||||
driver: local
|
||||
external: true
|
||||
name: ${STORAGE_VOLUME_NAME:-demat-facturation-dsi_demat_facturation_storage}
|
||||
|
||||
networks:
|
||||
demat-facturation-internal:
|
||||
|
||||
Reference in New Issue
Block a user