Conteneurisation (site 100 % statique — l'image ne détient AUCUNE donnée, vie privée identique) : - Dockerfile : nginxinc/nginx-unprivileged:alpine (uid 101, port 8080, pas de root), healthcheck wget intégré, labels OCI - nginx.conf : no-cache systématique (cohérence du jeu de fichiers à chaque mise à jour d'image, coût nul : ~600 Ko + gzip sur l'asset PK), gzip, en-têtes de sécurité, deny des dotfiles - .dockerignore : runtime uniquement (docs/ inclus — dialog changelog) ; local-test-data exclu en filet de sécurité - docker-compose.yml : read_only + tmpfs (/var/cache/nginx, /run, /tmp — les temporaires de nginx-unprivileged, constat au premier test réel) + no-new-privileges Nouveaux tests avant release : - scripts/container-test.sh : build + run DURCI (config compose) + healthcheck healthy + endpoints 200 + headers (no-cache/nosniff/DENY/ no-referrer) + gzip réel + MIME strict des modules ES + fichiers cachés non servis + image propre (pas de node_modules/npm) + docs/ embarqué + E2E playwright complet CONTRE LE CONTENEUR (HRT_E2E_BASE) - scripts/e2e.mjs : mode externe HRT_E2E_BASE (pilote un site déjà déployé — conteneur inclus, serveur local non démarré) - scripts/check.sh --release : supplée les 9 vérifications (version ↔ changelog ↔ tag ↔ arbre propre + test conteneur si daemon) Runtime Docker local installé pour le CI-like (colima 2 CPU / 2 Go) : premier build + run réel = 2 problèmes testés et corrigés (tmpfs /tmp, key case header_json curl). CONTAINER TEST OK en configuration durcie.
28 lines
1.4 KiB
Plaintext
28 lines
1.4 KiB
Plaintext
# ─────────────────────────────────────────────────────────────────────────────
|
|
# .dockerignore — ce qui n'entre PAS dans l'image de déploiement.
|
|
#
|
|
# L'image ne sert que le RUNTIME : app (index.html, css/, js/, assets/),
|
|
# docs/ (⚠️ requis — le dialog « Nouveautés » fetch docs/CHANGELOG.md),
|
|
# LICENSE/README. Tout le reste est exclu :
|
|
# - .git, node_modules, package-lock.json : jamais dans une image ;
|
|
# - tests/, scripts/ : outils de dev — inutiles au runtime (et l'image
|
|
# devient plus propre à auditer : `docker run … find /usr/share/nginx/html`);
|
|
# - local-test-data/ : DOUBLON DE SÉCURITÉ — exports de santé réels jamais
|
|
# versionnés (cf docs/DEVELOPPEMENT.md §3) ; s'ils existaient par erreur
|
|
# à la racine du contexte de build, ils n'iraient JAMAIS dans l'image ;
|
|
# - fichiers de config du conteneur exclus aussi (Dockerfile/compose sont
|
|
# des instructions, pas des fichiers à servir).
|
|
# ─────────────────────────────────────────────────────────────────────────────
|
|
.git
|
|
.gitignore
|
|
.dockerignore
|
|
Dockerfile
|
|
docker-compose.yml
|
|
node_modules
|
|
package-lock.json
|
|
tests
|
|
scripts
|
|
local-test-data
|
|
.DS_Store
|
|
Thumbs.db
|