Prompt file imported from radicepiero/TENNIS_GAME_MONOREPO (
.windsurf/workflows/deploy-digitalocean-droplet.md). Copyright stays with the author.
Obiettivo
Aggiornare il codice sul droplet e ricostruire lo stack docker compose in produzione, senza toccare .env.prod, DB, uploads, certificati.
Contesto
- Questo workflow è sul droplet via SSH (bash).
- Assunzioni:
- Repo sul droplet:
~/TENNIS_GAME_MONOREPO - File compose:
docker-compose.prod.yml - Env file:
.env.prod
- Repo sul droplet:
Passi
-
(Locale) Assicurati che
mastersia su GitHub e aggiornato- Verifica (PowerShell):
git statusgit log --oneline -n 5git push origin master
- Verifica (PowerShell):
-
Connessione SSH al droplet
- Comando (PowerShell):
ssh root@<IP_DROPLET>
- Comando (PowerShell):
-
Vai nella repo sul droplet
- Comando (droplet / bash):
cd TENNIS_GAME_MONOREPO
- Comando (droplet / bash):
-
Snapshot rapido (consigliato)
- Comandi:
git statusgit rev-parse --short HEADdocker ps --format "table {{.Names}}\t{{.Status}}"
- Comandi:
-
Allinea il codice al remoto
- Comandi:
git fetch origingit reset --hard origin/master
- Comandi:
-
Pulisci file non tracciati (con esclusioni)
- ATTENZIONE:
git clean -fdcancella file non tracciati. - Comando conservativo:
git clean -fd \ -e .env.prod \ -e services/ui/public/uploads \ -e services/ui/public/immagini
- ATTENZIONE:
-
Rebuild + restart stack prod
- Comando:
docker compose -f docker-compose.prod.yml --env-file .env.prod up -d --build
- Comando:
-
Verifica rapida servizi
- Comandi:
docker compose -f docker-compose.prod.yml --env-file .env.prod psdocker logs --tail 150 tennis-proxydocker logs --tail 150 tennis-uidocker logs --tail 150 tennis-api
- Comandi:
-
Smoke test (browser)
- Verifica:
https://www.popostapo.com/https://www.popostapo.com/friend/homehttps://www.popostapo.com/tornei/friendshttps://www.popostapo.com/stanzehttps://www.popostapo.com/api/health(se esiste endpoint; altrimenti una rotta API nota)
- Verifica:
Note
- Non usare
docker compose down -vin produzione. - Se c’è un problema di proxy (502), controlla prima che non ci siano stack compose “misti” (reti diverse).
- Questo workflow non include bootstrap/rinnovo Let’s Encrypt: vedi
DEPLOY_DIGITALOCEAN.md.
