chore(deploy): images OCI Gitea + compose production + CI

Recrée les fichiers de déploiement perdus lors de la restauration du repo.

- docker-compose.deploy.yml : production basée sur les images publiées
  (git.maison43gil.com/gilles/home_hub:{backend,frontend}-latest), sans build:,
  avec service backend-migrate (alembic upgrade head) avant le démarrage
- .gitea/workflows/build.yml : CI Gitea Actions, build+push des 2 images
- backend/.dockerignore + frontend/.dockerignore : images propres, sans secrets
- .env.example : template complet sans secret réel (placeholder change-me)
- README : section déploiement OCI (build manuel, CI, serveur, note 413 proxy)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-05-30 10:45:30 +02:00
parent c36be15e18
commit 36b5760566
6 changed files with 264 additions and 4 deletions
+58
View File
@@ -121,6 +121,64 @@ docker compose up -d
# homehub.local/mcp → backend:8000/mcp (pour les agents IA)
```
## Déploiement via registre OCI Gitea
Les images finales sont publiées sur le registre OCI privé `git.maison43gil.com`
(source unique de vérité). Deux images sous le paquet `home_hub`, distinguées par tag :
| Image | Tag |
|-------|-----|
| Backend (FastAPI) | `git.maison43gil.com/gilles/home_hub:backend-latest` |
| Frontend (Nginx) | `git.maison43gil.com/gilles/home_hub:frontend-latest` |
### Construction & publication (manuel)
```bash
docker login git.maison43gil.com
# Backend
docker build -t git.maison43gil.com/gilles/home_hub:backend-latest ./backend
docker push git.maison43gil.com/gilles/home_hub:backend-latest
# Frontend
docker build -t git.maison43gil.com/gilles/home_hub:frontend-latest ./frontend
docker push git.maison43gil.com/gilles/home_hub:frontend-latest
```
> Le registre est derrière Nginx Proxy Manager : pour les gros blobs (image
> backend ~1.3 Go), régler `client_max_body_size 0;` dans l'onglet Advanced
> du proxy host `git.maison43gil.com` (sinon erreur `413 Payload Too Large`).
### Construction automatique (Gitea Actions)
`.gitea/workflows/build.yml` build et push les deux images :
- push sur `main` → tags `*-latest`
- tag git `vX.Y.Z` → tags `*-latest` + `*-X.Y.Z`
### Déploiement sur le serveur
```bash
# Sur le serveur de production
git pull # récupère docker-compose.deploy.yml + .env.example
cp .env.example .env # compléter les secrets (POSTGRES_PASSWORD, MCP_API_KEY…)
docker login git.maison43gil.com
docker compose -f docker-compose.deploy.yml pull
docker compose -f docker-compose.deploy.yml up -d
```
Le service `backend-migrate` applique automatiquement les migrations Alembic
(`alembic upgrade head`) avant le démarrage du backend. Aucune image n'est
reconstruite en production (pas de `build:`).
### Environnements
| Fichier | Usage | Images |
|---------|-------|--------|
| `docker-compose.yml` | Dev (build local) | `build:` |
| `docker-compose.dev.yml` | Override dev (HMR + `--reload`) | `build:` |
| `docker-compose.deploy.yml` | **Production** | `image:` (OCI Gitea) |
## Évolutions prévues
- **Phase 5** — Scan code-barres (zxing-js) + enrichissement catalogue via OpenFoodFacts