2.6 KiB
2.6 KiB
NetGescon - Docker multisito (www + app + demo)
Questa procedura avvia:
www.netgescon.it: sito presentazione (statico)app.netgescon.it: ambiente produzione NetGescondemo.netgescon.it: ambiente demo NetGescon separato
Con persistenza dati su volumi Docker distinti per prod e demo.
File principali
docker/docker-compose.multisite.ymldocker/.env.multisite.exampledocker/nginx/prod.confdocker/nginx/demo.confdocker/www/index.html
Prerequisiti server
- DNS già puntati al server per:
www.netgescon.itapp.netgescon.itdemo.netgescon.it
- Porte aperte:
80,443 - Docker + Docker Compose plugin installati
Scelta architettura consigliata
Per il tuo caso è consigliata una VM ad hoc Ubuntu dedicata a NetGescon.
Motivi:
- isolamento da altri container già presenti
- minor rischio di conflitti porte/reti/volumi
- rollback più semplice
- passaggio da test a produzione più controllabile
Provisioning VM Ubuntu (rapido)
Sulla VM nuova:
cd /path/del/repo/netgescon-laravel
./scripts/provision-vm-multisite.sh
Poi esci/rientra nella sessione shell (gruppo docker).
Primo avvio
- Copia il file ambiente:
cd /home/michele/netgescon/netgescon-laravel
cp docker/.env.multisite.example docker/.env.multisite
-
Modifica
docker/.env.multisitecon password reali. -
Avvia stack:
./scripts/deploy-multisite.sh
- Verifica servizi:
docker compose --env-file docker/.env.multisite -f docker/docker-compose.multisite.yml ps
Aggiornamento applicazione
Quando aggiorni il codice:
cd /home/michele/netgescon/netgescon-laravel
./scripts/update-multisite.sh
Per aggiornare da un branch specifico:
GIT_REF=main ./scripts/update-multisite.sh
Persistenza dati
Volumi separati:
- Produzione:
prod_dbprod_storageprod_cacheprod_publicprod_redis
- Demo:
demo_dbdemo_storagedemo_cachedemo_publicdemo_redis
- Certificati TLS:
netgescon_letsencrypt
Backup consigliato
Backup DB produzione:
docker exec netgescon_prod_db mysqldump -u root -p"$PROD_DB_ROOT_PASSWORD" "$PROD_DB_DATABASE" > backup-prod.sql
Backup DB demo:
docker exec netgescon_demo_db mysqldump -u root -p"$DEMO_DB_ROOT_PASSWORD" "$DEMO_DB_DATABASE" > backup-demo.sql
Note operative
demoè separata daprod(DB, storage, redis diversi).wwwè statico e non impatta le app Laravel.- Se vuoi usare una seconda VM per test/staging, riusa questi file cambiando solo domini e file env.