diff --git a/Consigne d'utilisation du Registry OCI Gitea.md b/Consigne d'utilisation du Registry OCI Gitea.md new file mode 100644 index 0000000..596ef1d --- /dev/null +++ b/Consigne d'utilisation du Registry OCI Gitea.md @@ -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/: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. \ No newline at end of file