OCI registry consigne
This commit is contained in:
@@ -0,0 +1,261 @@
|
||||
# Consigne d'utilisation du Registry OCI Gitea
|
||||
|
||||
## Objectif
|
||||
|
||||
Toutes les images Docker finales d'un projet doivent être stockées dans le registre OCI privé de Gitea afin de centraliser :
|
||||
|
||||
- le code source ;
|
||||
- les versions applicatives ;
|
||||
- les images Docker ;
|
||||
- les déploiements ;
|
||||
- l'historique des versions.
|
||||
|
||||
Le registre OCI officiel à utiliser est :
|
||||
|
||||
```text
|
||||
git.maison43gil.com
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
# Règle générale
|
||||
|
||||
Une image Docker finale ne doit jamais être publiée sur :
|
||||
|
||||
- Docker Hub ;
|
||||
- GitHub Container Registry ;
|
||||
- Quay ;
|
||||
- GitLab Registry ;
|
||||
- tout autre registre externe.
|
||||
|
||||
Toutes les images doivent être publiées sur :
|
||||
|
||||
```text
|
||||
git.maison43gil.com
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
# Convention de nommage
|
||||
|
||||
Le nom de l'image doit correspondre au nom du dépôt Git.
|
||||
|
||||
Exemple :
|
||||
|
||||
```text
|
||||
Dépôt Git :
|
||||
home_hub
|
||||
|
||||
Image OCI :
|
||||
git.maison43gil.com/gilles/home_hub:latest
|
||||
```
|
||||
|
||||
Autres exemples :
|
||||
|
||||
```text
|
||||
git.maison43gil.com/gilles/design_system:latest
|
||||
git.maison43gil.com/gilles/nano_metrics:latest
|
||||
git.maison43gil.com/gilles/esp_jardin:latest
|
||||
git.maison43gil.com/gilles/proxmenus:latest
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
# Tags à publier
|
||||
|
||||
Minimum :
|
||||
|
||||
```text
|
||||
latest
|
||||
```
|
||||
|
||||
Recommandé :
|
||||
|
||||
```text
|
||||
latest
|
||||
v1.0.0
|
||||
v1.1.0
|
||||
v2.0.0
|
||||
```
|
||||
|
||||
Exemple :
|
||||
|
||||
```text
|
||||
git.maison43gil.com/gilles/home_hub:latest
|
||||
git.maison43gil.com/gilles/home_hub:v1.0.0
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
# Structure attendue d'un projet
|
||||
|
||||
```text
|
||||
projet/
|
||||
├── src/
|
||||
├── Dockerfile
|
||||
├── docker-compose.dev.yml
|
||||
├── docker-compose.deploy.yml
|
||||
├── README.md
|
||||
├── .env.example
|
||||
└── .gitea/
|
||||
└── workflows/
|
||||
└── build.yml
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
# Dockerfile
|
||||
|
||||
Le Dockerfile doit générer une image autonome et prête au déploiement.
|
||||
|
||||
L'image finale doit :
|
||||
|
||||
- être optimisée ;
|
||||
- ne contenir que les composants nécessaires ;
|
||||
- ne pas contenir de secrets ;
|
||||
- être exécutable sans modification.
|
||||
|
||||
---
|
||||
|
||||
# Construction de l'image
|
||||
|
||||
Exemple :
|
||||
|
||||
```bash
|
||||
docker build \
|
||||
-t git.maison43gil.com/gilles/home_hub:latest .
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
# Publication de l'image
|
||||
|
||||
Authentification :
|
||||
|
||||
```bash
|
||||
docker login git.maison43gil.com
|
||||
```
|
||||
|
||||
Publication :
|
||||
|
||||
```bash
|
||||
docker push \
|
||||
git.maison43gil.com/gilles/home_hub:latest
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
# Déploiement
|
||||
|
||||
Le fichier de déploiement doit utiliser exclusivement l'image OCI publiée.
|
||||
|
||||
Exemple :
|
||||
|
||||
```yaml
|
||||
services:
|
||||
|
||||
home_hub:
|
||||
|
||||
image: git.maison43gil.com/gilles/home_hub:latest
|
||||
|
||||
container_name: home_hub
|
||||
|
||||
restart: unless-stopped
|
||||
```
|
||||
|
||||
Le déploiement ne doit pas reconstruire l'image.
|
||||
|
||||
Interdiction :
|
||||
|
||||
```yaml
|
||||
build: .
|
||||
```
|
||||
|
||||
dans les fichiers de production.
|
||||
|
||||
---
|
||||
|
||||
# Séparation développement / production
|
||||
|
||||
Développement :
|
||||
|
||||
```yaml
|
||||
build: .
|
||||
```
|
||||
|
||||
autorisé.
|
||||
|
||||
Production :
|
||||
|
||||
```yaml
|
||||
image:
|
||||
```
|
||||
|
||||
obligatoire.
|
||||
|
||||
Exemple :
|
||||
|
||||
```text
|
||||
docker-compose.dev.yml
|
||||
```
|
||||
|
||||
```yaml
|
||||
services:
|
||||
app:
|
||||
build: .
|
||||
```
|
||||
|
||||
Exemple :
|
||||
|
||||
```text
|
||||
docker-compose.deploy.yml
|
||||
```
|
||||
|
||||
```yaml
|
||||
services:
|
||||
app:
|
||||
image: git.maison43gil.com/gilles/app:latest
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
# Processus standard
|
||||
|
||||
```text
|
||||
Développement
|
||||
↓
|
||||
Tests
|
||||
↓
|
||||
docker build
|
||||
↓
|
||||
docker push
|
||||
↓
|
||||
Registry OCI Gitea
|
||||
↓
|
||||
docker compose pull
|
||||
↓
|
||||
docker compose up -d
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
# Consigne pour un agent IA
|
||||
|
||||
Lorsqu'un projet doit être conteneurisé :
|
||||
|
||||
1. Créer un Dockerfile.
|
||||
2. Construire une image Docker finale.
|
||||
3. Nommer l'image selon le dépôt Git.
|
||||
4. Publier l'image dans le registre OCI Gitea.
|
||||
5. Générer un docker-compose.deploy.yml utilisant uniquement l'image publiée.
|
||||
6. Ne jamais utiliser Docker Hub comme destination finale.
|
||||
7. Ne jamais utiliser `build:` dans les fichiers de production.
|
||||
8. Toujours privilégier :
|
||||
|
||||
```text
|
||||
git.maison43gil.com/gilles/<nom_du_projet>:latest
|
||||
```
|
||||
|
||||
comme source officielle de déploiement.
|
||||
|
||||
Le registre OCI Gitea constitue la source unique de vérité pour toutes les images Docker de production.
|
||||
Reference in New Issue
Block a user