4.9 KiB
Executable File
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 directory host distinte per prod e demo.
Macchina corretta da usare
Per l'operativita reale attuale valgono queste regole:
- produzione Docker multisito solo su
192.168.0.157(svr-netgescon) - questa macchina locale
.200resta ambiente di sviluppo su:8000e staging su:80/:443 - non va ricreata qui la stack
www/app/demodi produzione
Verifica confermata il 2026-05-18 sul nodo 192.168.0.157:
http://195.110.133.78con hostwww/app/demorisponde con redirect307verso HTTPShttps://195.110.133.78con SNI/hostwww.netgescon.it,app.netgescon.it,demo.netgescon.itrisponde200- perche questo accada, il reverse proxy host-level non deve occupare
80/443; le porte devono essere pubblicate da Traefik via Docker
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.
Nota pratica:
- se
APP_KEYmanca,scripts/deploy-multisite.shla genera automaticamente e la salva indocker/.env.multisite - dopo
up -di loginapp/demopossono restituire502per pochi secondi durante il warm-up iniziale di PHP-FPM; la verifica va rifatta a stack assestata
- 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
Verifica operativa minima dopo update:
curl -kI --resolve app.netgescon.it:443:127.0.0.1 https://app.netgescon.it/admin-filament/login
curl -kI --resolve demo.netgescon.it:443:127.0.0.1 https://demo.netgescon.it/admin-filament/login
Se il nodo .157 non riesce a fare git fetch da Gitea, il checkout corretto lato host resta ~/netgescon/netgescon-day0-git; i container prod_app e demo_app non sono repository Git e non possono aggiornarsi da soli con sync interno a /var/www.
Persistenza dati
Le directory host predefinite sono:
- Produzione:
/srv/netgescon/prod/mysql/srv/netgescon/prod/storage/srv/netgescon/prod/bootstrap-cache/srv/netgescon/prod/public/srv/netgescon/prod/redis
- Demo:
/srv/netgescon/demo/mysql/srv/netgescon/demo/storage/srv/netgescon/demo/bootstrap-cache/srv/netgescon/demo/public/srv/netgescon/demo/redis
- Certificati TLS:
/srv/netgescon/traefik/letsencrypt
La preparazione automatica delle directory viene eseguita da:
./scripts/ops/netgescon-prepare-multisite-host-paths.sh --report
I path possono essere cambiati in docker/.env.multisite senza modificare il compose.
Backup consigliato
Backup locale completo di DB e filesystem persistente:
./docker/backup-multisite.sh
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
Backup incrementale documenti su Google Drive dal filesystem host:
./scripts/ops/netgescon-data-backup-incremental-gdrive.sh --env-file docker/.env.multisite
Sincronizzazione del mirror documentale sulla .53 dopo push su Gitea:
./scripts/ai/sync_docs_to_53.sh --env-file docker/.env.multisite
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.