3.7 KiB
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 :
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 :
git.maison43gil.com
Convention de nommage
Le nom de l'image doit correspondre au nom du dépôt Git.
Exemple :
Dépôt Git :
home_hub
Image OCI :
git.maison43gil.com/gilles/home_hub:latest
Autres exemples :
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 :
latest
Recommandé :
latest
v1.0.0
v1.1.0
v2.0.0
Exemple :
git.maison43gil.com/gilles/home_hub:latest
git.maison43gil.com/gilles/home_hub:v1.0.0
Structure attendue d'un projet
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 :
docker build \
-t git.maison43gil.com/gilles/home_hub:latest .
Publication de l'image
Authentification :
docker login git.maison43gil.com
Publication :
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 :
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 :
build: .
dans les fichiers de production.
Séparation développement / production
Développement :
build: .
autorisé.
Production :
image:
obligatoire.
Exemple :
docker-compose.dev.yml
services:
app:
build: .
Exemple :
docker-compose.deploy.yml
services:
app:
image: git.maison43gil.com/gilles/app:latest
Processus standard
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é :
- Créer un Dockerfile.
- Construire une image Docker finale.
- Nommer l'image selon le dépôt Git.
- Publier l'image dans le registre OCI Gitea.
- Générer un docker-compose.deploy.yml utilisant uniquement l'image publiée.
- Ne jamais utiliser Docker Hub comme destination finale.
- Ne jamais utiliser
build:dans les fichiers de production. - Toujours privilégier :
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.