- Completed Action 1.1.2.1: Installed @openapitools/openapi-generator-cli - Completed Action 1.1.2.2: Created generate-types.sh script - Added swagger annotations to cmd/modern-server/main.go - Regenerated swagger.yaml with proper info section - Successfully generated TypeScript types to src/types/generated/ The script generates types from veza-backend-api/openapi.yaml using typescript-axios generator and creates barrel exports.
304 lines
6.4 KiB
Markdown
304 lines
6.4 KiB
Markdown
# Veza Makefile Guide
|
|
|
|
Ce Makefile fournit une interface complète pour gérer le projet Veza avec support Docker et Incus (LXD).
|
|
|
|
## Organisation des Commandes
|
|
|
|
Les commandes sont organisées en trois niveaux :
|
|
|
|
### 🔴 HIGH LEVEL - Commandes de haut niveau
|
|
Commandes simples pour les tâches courantes :
|
|
- `make setup` - Initialisation complète du projet
|
|
- `make stop-all` - Arrêter tous les services
|
|
- `make restart-all` - Redémarrer tous les services
|
|
- `make clean` - Nettoyer les artefacts de build
|
|
- `make deploy-docker` - Déployer avec Docker + HAProxy
|
|
- `make deploy-incus` - Déployer avec Incus containers
|
|
- `make status-full` - Afficher le statut complet du système
|
|
|
|
### 🔵 INTERMEDIATE - Commandes intermédiaires
|
|
Commandes plus précises pour gérer des services individuels :
|
|
- `make start-service SERVICE=backend-api` - Démarrer un service
|
|
- `make stop-service SERVICE=backend-api` - Arrêter un service
|
|
- `make restart-service SERVICE=backend-api` - Redémarrer un service
|
|
- `make logs-service SERVICE=backend-api` - Voir les logs d'un service
|
|
- `make build-service SERVICE=backend-api` - Builder un service
|
|
- `make build-all` - Builder tous les services
|
|
- `make infra-up` - Démarrer l'infrastructure (Postgres, Redis, RabbitMQ)
|
|
- `make db-migrate` - Exécuter les migrations de base de données
|
|
- `make db-shell` - Accéder au shell Postgres
|
|
- `make redis-shell` - Accéder au shell Redis
|
|
|
|
### 🟣 LOW LEVEL / DEBUG - Commandes de bas niveau
|
|
Commandes pour le développement et le debug :
|
|
- `make check-tools` - Vérifier les outils requis
|
|
- `make install-tools` - Installer les outils de développement
|
|
- `make install-deps` - Installer les dépendances
|
|
- `make check-ports` - Vérifier la disponibilité des ports
|
|
- `make incus-setup-network` - Configurer le réseau Incus
|
|
- `make incus-deploy-service SERVICE=backend-api` - Déployer un service sur Incus
|
|
- `make incus-logs SERVICE=backend-api` - Voir les logs Incus
|
|
|
|
## Déploiement Docker
|
|
|
|
### Déploiement complet avec HAProxy
|
|
|
|
```bash
|
|
# Builder et déployer tous les services
|
|
make deploy-docker
|
|
```
|
|
|
|
Cela va :
|
|
1. Builder toutes les images Docker
|
|
2. Démarrer tous les services (infrastructure + applications)
|
|
3. Configurer HAProxy comme reverse proxy
|
|
4. Attendre que tous les services soient prêts
|
|
|
|
Accès :
|
|
- Frontend : http://localhost:80
|
|
- API : http://localhost:80/api/v1
|
|
- WebSocket Chat : ws://localhost:80/ws
|
|
- WebSocket Stream : ws://localhost:80/stream
|
|
- HAProxy Stats : http://localhost:8404/stats
|
|
|
|
### Gestion des services individuels
|
|
|
|
```bash
|
|
# Démarrer un service
|
|
make start-service SERVICE=backend-api
|
|
|
|
# Arrêter un service
|
|
make stop-service SERVICE=backend-api
|
|
|
|
# Redémarrer un service
|
|
make restart-service SERVICE=backend-api
|
|
|
|
# Voir les logs
|
|
make logs-service SERVICE=backend-api
|
|
```
|
|
|
|
## Déploiement Incus (LXD)
|
|
|
|
### Prérequis
|
|
|
|
```bash
|
|
# Installer Incus
|
|
sudo snap install incus
|
|
|
|
# Initialiser Incus (première fois)
|
|
sudo incus admin init
|
|
```
|
|
|
|
### Déploiement complet
|
|
|
|
```bash
|
|
# Déployer tous les services avec Incus
|
|
make deploy-incus
|
|
```
|
|
|
|
Cela va :
|
|
1. Créer le réseau Incus `veza-network`
|
|
2. Créer le profil `veza-profile`
|
|
3. Déployer chaque service dans un container Incus séparé
|
|
4. Installer Docker dans chaque container
|
|
|
|
### Gestion des containers Incus
|
|
|
|
```bash
|
|
# Voir les logs d'un container
|
|
make incus-logs SERVICE=backend-api
|
|
|
|
# Arrêter tous les containers
|
|
make incus-stop-all
|
|
|
|
# Déployer un service spécifique
|
|
make incus-deploy-service SERVICE=backend-api
|
|
```
|
|
|
|
## Architecture
|
|
|
|
### Services
|
|
|
|
- **backend-api** : API Go (port 8080)
|
|
- **chat-server** : Serveur Chat Rust (port 3000)
|
|
- **stream-server** : Serveur Stream Rust (port 3001)
|
|
- **web** : Frontend React/Vite (port 5173)
|
|
- **haproxy** : Reverse Proxy (port 80)
|
|
|
|
### Infrastructure
|
|
|
|
- **postgres** : Base de données PostgreSQL (port 5432)
|
|
- **redis** : Cache Redis (port 6379)
|
|
- **rabbitmq** : Message broker RabbitMQ (ports 5672, 15672)
|
|
|
|
### Réseau
|
|
|
|
Tous les services communiquent via le réseau Docker `veza-network` (172.20.0.0/16).
|
|
|
|
## Développement Local
|
|
|
|
### Démarrer l'environnement de développement
|
|
|
|
```bash
|
|
# Démarrer tout (détecte automatiquement les outils de hot reload)
|
|
make dev
|
|
|
|
# Démarrer seulement les backends
|
|
make dev-backend
|
|
```
|
|
|
|
Le Makefile détecte automatiquement :
|
|
- `air` pour le hot reload Go
|
|
- `cargo-watch` pour le hot reload Rust
|
|
- Utilise le mode standard si les outils ne sont pas disponibles
|
|
|
|
### Arrêter les services locaux
|
|
|
|
```bash
|
|
# Arrêter tous les processus locaux
|
|
make stop-local-services
|
|
```
|
|
|
|
## Maintenance
|
|
|
|
### Nettoyage
|
|
|
|
```bash
|
|
# Nettoyer les artefacts de build
|
|
make clean
|
|
|
|
# Nettoyage complet (demande confirmation)
|
|
make clean-deep
|
|
```
|
|
|
|
### Statut
|
|
|
|
```bash
|
|
# Statut simple
|
|
make status
|
|
|
|
# Statut complet (Docker + Local + Incus)
|
|
make status-full
|
|
```
|
|
|
|
### Tests
|
|
|
|
```bash
|
|
# Exécuter tous les tests
|
|
make test
|
|
|
|
# Linter le code
|
|
make lint
|
|
|
|
# Formater le code
|
|
make fmt
|
|
```
|
|
|
|
## Configuration
|
|
|
|
Les variables d'environnement peuvent être définies dans un fichier `.env` :
|
|
|
|
```bash
|
|
# Database
|
|
DB_USER=veza
|
|
DB_PASS=password
|
|
DB_NAME=veza
|
|
|
|
# Ports
|
|
PORT_GO=8080
|
|
PORT_CHAT=3000
|
|
PORT_STREAM=3001
|
|
PORT_WEB=5173
|
|
PORT_HAPROXY=80
|
|
|
|
# JWT Secret (CHANGEZ EN PRODUCTION!)
|
|
JWT_SECRET=your-secret-key-minimum-32-characters
|
|
|
|
# CORS
|
|
CORS_ORIGINS=http://localhost:5173,http://localhost:3000
|
|
```
|
|
|
|
## Troubleshooting
|
|
|
|
### Ports occupés
|
|
|
|
```bash
|
|
# Vérifier les ports
|
|
make check-ports
|
|
```
|
|
|
|
### Services ne démarrent pas
|
|
|
|
```bash
|
|
# Vérifier les logs
|
|
make logs-service SERVICE=backend-api
|
|
|
|
# Vérifier le statut
|
|
make status-full
|
|
```
|
|
|
|
### Problèmes avec Incus
|
|
|
|
```bash
|
|
# Vérifier que Incus est installé
|
|
incus version
|
|
|
|
# Vérifier les containers
|
|
incus list
|
|
|
|
# Voir les logs d'un container
|
|
make incus-logs SERVICE=backend-api
|
|
```
|
|
|
|
## Exemples d'utilisation
|
|
|
|
### Scénario 1 : Développement local
|
|
|
|
```bash
|
|
# Setup initial
|
|
make setup
|
|
|
|
# Démarrer l'infrastructure
|
|
make infra-up
|
|
|
|
# Démarrer les services en mode dev
|
|
make dev
|
|
```
|
|
|
|
### Scénario 2 : Déploiement Docker
|
|
|
|
```bash
|
|
# Builder et déployer
|
|
make deploy-docker
|
|
|
|
# Vérifier le statut
|
|
make status-full
|
|
|
|
# Voir les logs d'un service
|
|
make logs-service SERVICE=backend-api
|
|
```
|
|
|
|
### Scénario 3 : Déploiement Incus
|
|
|
|
```bash
|
|
# Setup Incus
|
|
sudo snap install incus
|
|
sudo incus admin init
|
|
|
|
# Déployer
|
|
make deploy-incus
|
|
|
|
# Vérifier
|
|
make status-full
|
|
```
|
|
|
|
### Scénario 4 : Maintenance
|
|
|
|
```bash
|
|
# Redémarrer un service spécifique
|
|
make restart-service SERVICE=backend-api
|
|
|
|
# Rebuilder un service
|
|
make build-service SERVICE=backend-api
|
|
make restart-service SERVICE=backend-api
|
|
```
|