mirror of
https://github.com/MaksTinyWorkshop/_Assistant_Lead_Tech
synced 2026-04-06 21:41:42 +02:00
feats : automatisation des process
This commit is contained in:
184
60_playbooks/bootstrap_projet_docker.md
Normal file
184
60_playbooks/bootstrap_projet_docker.md
Normal file
@@ -0,0 +1,184 @@
|
||||
# Playbook — Bootstrap d’un projet Docker sur le NUC
|
||||
|
||||
Ce document décrit la procédure standard pour **initialiser un nouveau projet Docker** sur l’environnement NUC (`docker-dev`).
|
||||
|
||||
Objectifs :
|
||||
|
||||
- garantir une structure cohérente entre les projets
|
||||
- centraliser les volumes persistants
|
||||
- préparer le projet pour le développement via VSCode Remote / SSH
|
||||
|
||||
---
|
||||
|
||||
# Architecture standard du NUC
|
||||
|
||||
Tous les projets suivent la structure suivante :
|
||||
|
||||
```
|
||||
/srv/
|
||||
projects/ # code source des projets
|
||||
docker-data/ # volumes persistants Docker
|
||||
backups/ # sauvegardes
|
||||
```
|
||||
|
||||
Exemple pour un projet `portfolio` :
|
||||
|
||||
```
|
||||
/srv/projects/portfolio
|
||||
/srv/docker-data/portfolio/
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
# Étape 1 — Cloner le projet
|
||||
|
||||
Depuis la VM `docker-dev` :
|
||||
|
||||
```
|
||||
cd /srv/projects
|
||||
git clone <repo>
|
||||
cd <repo>
|
||||
```
|
||||
|
||||
Exemple :
|
||||
|
||||
```
|
||||
git clone git@github.com:xxx/portfolio.git
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
# Étape 2 — Préparer les volumes persistants
|
||||
|
||||
Créer le dossier dédié au projet :
|
||||
|
||||
```
|
||||
mkdir -p /srv/docker-data/<nom-projet>
|
||||
```
|
||||
|
||||
Exemples :
|
||||
|
||||
```
|
||||
/srv/docker-data/portfolio/postgres
|
||||
/srv/docker-data/portfolio/uploads
|
||||
```
|
||||
|
||||
Principe :
|
||||
|
||||
- **aucune donnée persistante ne doit vivre dans le repo Git**
|
||||
- tous les volumes doivent être externalisés dans `/srv/docker-data`
|
||||
|
||||
---
|
||||
|
||||
# Étape 3 — Adapter le docker-compose
|
||||
|
||||
Les services doivent utiliser les volumes du NUC.
|
||||
|
||||
Exemple :
|
||||
|
||||
```yaml
|
||||
services:
|
||||
postgres:
|
||||
image: postgres:17
|
||||
volumes:
|
||||
- /srv/docker-data/portfolio/postgres:/var/lib/postgresql/data
|
||||
```
|
||||
|
||||
Bonnes pratiques :
|
||||
|
||||
- éviter les volumes anonymes
|
||||
- préférer les chemins absolus
|
||||
|
||||
---
|
||||
|
||||
# Étape 4 — Préparer la base de données (si nécessaire)
|
||||
|
||||
Si le projet utilise la base partagée :
|
||||
|
||||
```
|
||||
psql -U postgres_su
|
||||
```
|
||||
|
||||
Créer :
|
||||
|
||||
```
|
||||
CREATE USER <user> WITH PASSWORD '<password>';
|
||||
CREATE DATABASE <db> OWNER <user>;
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
# Étape 5 — Initialiser la mémoire projet
|
||||
|
||||
Dans le repo :
|
||||
|
||||
1. copier le template :
|
||||
|
||||
```
|
||||
70_templates/projet_CLAUDE.md
|
||||
```
|
||||
|
||||
2. créer le fichier :
|
||||
|
||||
```
|
||||
CLAUDE.md
|
||||
```
|
||||
|
||||
3. créer le symlink pour Codex :
|
||||
|
||||
```
|
||||
ln -s CLAUDE.md AGENTS.md
|
||||
```
|
||||
|
||||
Ce fichier servira de **mémoire active du projet**.
|
||||
|
||||
---
|
||||
|
||||
# Étape 6 — Lancer l’environnement
|
||||
|
||||
Depuis le dossier du projet :
|
||||
|
||||
```
|
||||
docker compose up -d
|
||||
```
|
||||
|
||||
Vérifier :
|
||||
|
||||
```
|
||||
docker ps
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
# Étape 7 — Vérification
|
||||
|
||||
Contrôler :
|
||||
|
||||
- que les conteneurs démarrent correctement
|
||||
- que les volumes sont bien montés
|
||||
- que la base de données est accessible
|
||||
|
||||
Commandes utiles :
|
||||
|
||||
```
|
||||
docker compose logs -f
|
||||
docker logs <container>
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
# Bonnes pratiques
|
||||
|
||||
- garder les volumes hors du repo
|
||||
- documenter la stack dans `CLAUDE.md`
|
||||
- vérifier les ports exposés
|
||||
|
||||
---
|
||||
|
||||
# Quand utiliser ce playbook
|
||||
|
||||
Ce playbook doit être utilisé lorsque :
|
||||
|
||||
- un **nouveau projet Docker** est créé
|
||||
- un projet est **installé pour la première fois sur le NUC**
|
||||
- un environnement doit être **reproduit sur une nouvelle machine**
|
||||
Reference in New Issue
Block a user