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