Migrazione a Docker Compose Profiles
Questa guida documenta la migrazione dal vecchio sistema con file multipli al nuovo sistema unificato con Docker Compose Profiles.
π― Cosa Γ¨ Cambiatoβ
Prima (Sistema Vecchio)β
docker-compose.yml # Produzione
docker-compose.dev.yml # Development
docker-compose.local.yml # Local (deprecato)
Problemi:
- β Duplicazione codice
- β 3+ file da manutenere
- β Comandi diversi per ogni ambiente
- β Rischio disallineamento configurazioni
Dopo (Sistema Nuovo)β
docker-compose.yml # Unico file con 3 profiles
βββ profile: dev # Development
βββ profile: staging # Staging
βββ profile: prod # Production
Vantaggi:
- β Zero duplicazione
- β 1 solo file da manutenere
- β Comandi uniformi
- β Configurazioni sincronizzate
- β Script helper inclusi
π Tabella di Conversione Comandiβ
Developmentβ
| Vecchio Comando | Nuovo Comando |
|---|---|
docker compose -f docker-compose.dev.yml up -d | docker compose --profile dev up -d |
docker compose -f docker-compose.dev.yml down | docker compose --profile dev down |
docker compose -f docker-compose.dev.yml logs -f | docker compose --profile dev logs -f |
docker compose -f docker-compose.dev.yml ps | docker compose --profile dev ps |
docker compose -f docker-compose.dev.yml build | docker compose --profile dev build |
Oppure usa script helper:
./deploy.sh up dev # Linux/Mac
.\deploy.ps1 up dev # Windows
Staging/Productionβ
| Vecchio Comando | Nuovo Comando (Staging) | Nuovo Comando (Prod) |
|---|---|---|
docker compose up -d | docker compose --profile staging up -d | docker compose --profile prod up -d |
docker compose down | docker compose --profile staging down | docker compose --profile prod down |
docker compose logs -f | docker compose --profile staging logs -f | docker compose --profile prod logs -f |
docker compose ps | docker compose --profile staging ps | docker compose --profile prod ps |
docker compose build | docker compose --profile staging build | docker compose --profile prod build |
Oppure usa script helper:
./deploy.sh up staging # Staging
./deploy.sh up prod # Production
π Procedura di Migrazioneβ
Step 1: Aggiorna Repositoryβ
# Assicurati di essere sull'ultimo commit
git pull origin [branch]
# Verifica presenza nuovi file
ls -la env.*.example
ls -la deploy.*
Dovresti vedere:
- β
docker-compose.yml(aggiornato) - β
env.dev.example - β
env.staging.example - β
env.prod.example - β
deploy.sh - β
deploy.ps1
Step 2: Backup (Opzionale)β
I vecchi file sono giΓ salvati automaticamente come .backup:
docker-compose.yml.backupdocker-compose.dev.yml.backupdocker-compose.local.yml.backup
Step 3: Configura Ambienteβ
# Sviluppo
cp env.dev.example .env
# Staging (su server)
cp env.staging.example .env
# Produzione (su server)
cp env.prod.example .env
Modifica .env con i tuoi valori reali.
Step 4: Stop Vecchi Containerβ
# Se hai container in esecuzione con vecchio sistema
docker compose -f docker-compose.dev.yml down # Dev
docker compose down # Prod/Staging
Step 5: Avvia con Nuovo Sistemaβ
# Development
./deploy.sh up dev
# Staging
./deploy.sh up staging
# Production
./deploy.sh up prod
Step 6: Verificaβ
# Controlla stato
./deploy.sh ps [env]
# Controlla logs
./deploy.sh logs [env]
# Test health endpoint
curl http://localhost:3000/health # Dev
curl https://langgraphjs-stage.tidiko.ai/health # Staging
curl https://langgraphjs-prod.tidiko.ai/health # Production
π Mapping Serviziβ
Nomi Container Aggiornatiβ
I container ora hanno suffissi per ambiente:
| Vecchio Nome | Nuovo Nome (Dev) | Nuovo Nome (Staging) | Nuovo Nome (Prod) |
|---|---|---|---|
langgraphjs-app | app-dev | app-staging | app-prod |
queue-worker | queue-worker-dev | queue-worker-staging | queue-worker-prod |
postgres | postgres-dev | postgres-staging | postgres-prod |
hatchet-engine | N/A (usa Lite) | hatchet-engine-staging | hatchet-engine-prod |
π Domini di Accessoβ
| Servizio | Dev | Staging | Prod |
|---|---|---|---|
| App | http://localhost:3000 | https://staging-langgraphjs.tidiko.ai | https://langgraphjs.tidiko.ai |
| Hatchet Dashboard | http://localhost:8888 | https://hatchet.stage.tidiko.ai | https://hatchet.prod.tidiko.ai |
| RabbitMQ | http://localhost:15672 | http://localhost:15673 | http://localhost:15672 |
Porte Aggiornateβ
| Servizio | Dev | Staging | Prod |
|---|---|---|---|
| App | 3000 | 3001 | 3000 |
| Worker | 3300 | 3301 | 3300 |
| PostgreSQL | 5432 | 5436 | 5433 |
| Hatchet DB | 5434 | 5437 | 5435 |
| Hatchet Dashboard | 8888 | Via Traefik | Via Traefik |
π Troubleshooting Migrazioneβ
Problema: "service not found"β
Causa: Stai usando il nome servizio vecchio o profile sbagliato.
Soluzione:
# Lista servizi disponibili per profile
docker compose --profile dev config --services
# Output atteso:
# app-dev
# queue-worker-dev
# postgres-dev
# etc...
Problema: "port already in use"β
Causa: Vecchi container ancora in esecuzione.
Soluzione:
# Stop tutti i container
docker compose -f docker-compose.dev.yml down # Se esistono vecchi
docker compose --profile dev down
docker compose --profile staging down
docker compose --profile prod down
# Verifica nessun container attivo
docker ps
# Avvia solo l'ambiente desiderato
./deploy.sh up dev
Problema: "network not found"β
Causa: Network Traefik non esiste (solo per staging/prod).
Soluzione:
# Crea network Traefik
docker network create traefic_traefik-network
# Oppure usa dev (senza Traefik)
./deploy.sh up dev
Problema: "File .env non trovato"β
Causa: Non hai copiato il template.
Soluzione:
cp env.dev.example .env
nano .env # Modifica valori
π Rollback (se necessario)β
Se qualcosa va storto e vuoi tornare al vecchio sistema:
# 1. Stop nuovo sistema
docker compose --profile dev down
# 2. Ripristina backup
cp docker-compose.yml.backup docker-compose.yml
cp docker-compose.dev.yml.backup docker-compose.dev.yml
# 3. Usa comandi vecchi
docker compose -f docker-compose.dev.yml up -d
β οΈ Nota: I dati nei volumi Docker sono preservati, quindi non perdi database o file caricati.
β Checklist Post-Migrazioneβ
Dopo la migrazione, verifica:
- Container in esecuzione con nomi nuovi
- Health check passa (
/healthendpoint) - Logs accessibili (
./deploy.sh logs [env]) - Database raggiungibile
- Hatchet dashboard funzionante
- Test funzionalitΓ principali:
- Upload documenti
- Chat AI
- Generazione embedding
- Task asincroni
π Documentazione Aggiuntivaβ
- Deploy Guide Completa - Procedure deploy dettagliate
- Agent e Worker Overview - Panoramica sistema
File nel Repositoryβ
I seguenti file sono disponibili nel repository tidiko-node-agent:
QUICK-START.md- Setup rapido 3 passiDEPLOY-GUIDE.md- Guida completa con troubleshootingdeploy.sh- Script helper Linux/Macdeploy.ps1- Script helper Windows
π Nuovo Comando Deploy Completoβ
Entrambi gli script ora includono un comando deploy che esegue automaticamente:
- Build delle immagini
- Down dei servizi esistenti
- Up dei nuovi servizi
- Health Check automatico ogni 5 secondi per 2 minuti
Esempi:
# Linux/Mac (primo utilizzo: rendi eseguibile)
chmod +x deploy.sh
# Deploy completo
./deploy.sh deploy dev
./deploy.sh deploy prod
./deploy.sh deploy staging
# Windows PowerShell
.\deploy.ps1 deploy dev
.\deploy.ps1 deploy prod
.\deploy.ps1 deploy staging
Il comando si ferma automaticamente quando tutti i container sono healthy, oppure mostra un errore dopo 2 minuti di timeout.
π Supportoβ
Se incontri problemi durante la migrazione:
- Controlla logs:
./deploy.sh logs [env] - Verifica configurazione:
cat .env - Lista servizi attivi:
./deploy.sh ps [env] - Rollback se necessario (vedi sopra)
- Contatta il team se il problema persiste
La migrazione Γ¨ stata completata con successo! Il nuovo sistema offre maggiore flessibilitΓ e manutenibilitΓ . π