# 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/: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.