Docker
Explainer inclut un Dockerfile multi-étapes capable de compiler n’importe laquelle des trois applications dans un conteneur léger basé sur nginx.
Étapes du Dockerfile
Le processus de compilation comporte trois étapes :
| Étape | Image de base | Objectif |
|---|---|---|
deps | node:20-alpine | Installer toutes les dépendances du monorepo |
builder | node:20-alpine | Compiler l’application cible |
runtime | nginx:1.28.0-alpine3.21 | Servir le contenu statique généré |
Compiler une application
Utilisez l’argument de build APP pour spécifier quelle application compiler :
docker build --build-arg APP=docs -t explainer-docs .
docker build --build-arg APP=blog -t explainer-blog .
docker build --build-arg APP=website -t explainer-website .
Exécution
docker run -p 8080:8080 explainer-docs
Le conteneur sert sur le port 8080 par défaut, configuré dans nginx.conf.
Configuration Nginx
Le fichier nginx.conf inclus fournit :
- Compression gzip pour le texte, CSS, JS, JSON et SVG
- Routage SPA avec
try_files $uri $uri/index.html =404 - En-têtes no-cache pour
404.htmlafin d’éviter les pages d’erreur obsolètes
server {
listen 8080;
root /usr/share/nginx/html;
gzip on;
gzip_types text/plain text/css application/json application/javascript text/xml image/svg+xml;
location / {
try_files $uri $uri/index.html =404;
}
location = /404.html {
add_header Cache-Control "no-cache";
}
}Exemple Docker Compose
services:
docs:
build:
context: .
args:
APP: docs
ports:
- "4321:8080"
blog:
build:
context: .
args:
APP: blog
ports:
- "4322:8080"
website:
build:
context: .
args:
APP: website
ports:
- "4323:8080"