feat: docs
This commit is contained in:
@@ -0,0 +1,78 @@
|
||||
---
|
||||
title: Déploiement avec Docker
|
||||
description: Construire les images, les publier puis les exécuter sur le serveur.
|
||||
---
|
||||
|
||||
Une fois l'application dockerisée, le déploiement suit une chaîne simple :
|
||||
|
||||
```text
|
||||
build des images
|
||||
↓
|
||||
push vers un registry
|
||||
↓
|
||||
pull sur le serveur
|
||||
↓
|
||||
docker compose up
|
||||
```
|
||||
|
||||
Une CI/CD, par exemple GitHub Actions, automatise cette chaîne.
|
||||
|
||||
## CI : garder la branche saine
|
||||
|
||||
Sur chaque push vers la branche principale :
|
||||
|
||||
| Job | Contenu |
|
||||
| --- | --- |
|
||||
| `backend-checks` | lint, build, tests unitaires et tests e2e |
|
||||
| `frontend-checks` | lint, build et tests |
|
||||
| `build-images` | construction des images avec le fichier Compose de production |
|
||||
|
||||
Le job de build vérifie que les Dockerfiles continuent de produire des images valides.
|
||||
|
||||
## CD : publier une version
|
||||
|
||||
Lorsqu'un tag de version est poussé :
|
||||
|
||||
| Job | Contenu |
|
||||
| --- | --- |
|
||||
| Vérifications | Les mêmes contrôles que la CI |
|
||||
| `build-and-push` | Build des images et push vers Docker Hub, GHCR ou un autre registry |
|
||||
| `deploy` | Copie de la configuration puis connexion SSH au serveur |
|
||||
|
||||
## Build une fois, run partout
|
||||
|
||||
Le serveur ne recompile rien. Il récupère exactement l'image construite et testée par la CI :
|
||||
|
||||
```bash
|
||||
docker compose pull
|
||||
docker compose up -d --no-build
|
||||
docker image prune -f
|
||||
```
|
||||
|
||||
`--no-build` garantit que le serveur lance les images récupérées sans reconstruire depuis le code source.
|
||||
|
||||
## image et build dans le Compose de production
|
||||
|
||||
```yaml
|
||||
services:
|
||||
backend:
|
||||
image: registry.example.com/mon-app/backend:${IMAGE_TAG:-latest}
|
||||
build:
|
||||
context: ./backend
|
||||
dockerfile: Dockerfile
|
||||
```
|
||||
|
||||
Dans la CI, `build:` sert à construire puis pousser l'image. En production, le serveur utilise `image:` et `--no-build` pour exécuter le tag déjà publié.
|
||||
|
||||
Le serveur n'a besoin ni du code source, ni de Node.js, ni du toolchain de compilation. Il lui faut seulement Docker, le fichier Compose et un accès au registry.
|
||||
|
||||
## Ce que Docker apporte
|
||||
|
||||
- **Reproductibilité** : l'image testée par la CI est celle qui tourne en production.
|
||||
- **Rollback simple** : revenir en arrière revient à redéployer le tag précédent.
|
||||
- **Serveur minimal** : toutes les versions et dépendances vivent dans les images.
|
||||
- **Immutabilité** : on remplace une image complète au lieu de modifier le serveur en place.
|
||||
|
||||
<Callout title="Principe de livraison" type="success">
|
||||
Construis une fois et exécute partout. Une image versionnée est l'unité de livraison ; le tag identifie précisément la version déployée.
|
||||
</Callout>
|
||||
Reference in New Issue
Block a user