# NetGescon - Docker multisito (www + app + demo) Questa procedura avvia: - `www.netgescon.it`: sito presentazione (statico) - `app.netgescon.it`: ambiente produzione NetGescon - `demo.netgescon.it`: ambiente demo NetGescon separato Con persistenza dati su volumi Docker distinti per `prod` e `demo`. ## File principali - `docker/docker-compose.multisite.yml` - `docker/.env.multisite.example` - `docker/nginx/prod.conf` - `docker/nginx/demo.conf` - `docker/www/index.html` ## Prerequisiti server - DNS già puntati al server per: - `www.netgescon.it` - `app.netgescon.it` - `demo.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: ```bash cd /path/del/repo/netgescon-laravel ./scripts/provision-vm-multisite.sh ``` Poi esci/rientra nella sessione shell (gruppo docker). ## Primo avvio 1. Copia il file ambiente: ```bash cd /home/michele/netgescon/netgescon-laravel cp docker/.env.multisite.example docker/.env.multisite ``` 1. Modifica `docker/.env.multisite` con password reali. 2. Avvia stack: ```bash ./scripts/deploy-multisite.sh ``` 1. Verifica servizi: ```bash docker compose --env-file docker/.env.multisite -f docker/docker-compose.multisite.yml ps ``` ## Aggiornamento applicazione Quando aggiorni il codice: ```bash cd /home/michele/netgescon/netgescon-laravel ./scripts/update-multisite.sh ``` Per aggiornare da un branch specifico: ```bash GIT_REF=main ./scripts/update-multisite.sh ``` ## Persistenza dati Volumi separati: - Produzione: - `prod_db` - `prod_storage` - `prod_cache` - `prod_public` - `prod_redis` - Demo: - `demo_db` - `demo_storage` - `demo_cache` - `demo_public` - `demo_redis` - Certificati TLS: - `netgescon_letsencrypt` ## Backup consigliato Backup DB produzione: ```bash docker exec netgescon_prod_db mysqldump -u root -p"$PROD_DB_ROOT_PASSWORD" "$PROD_DB_DATABASE" > backup-prod.sql ``` Backup DB demo: ```bash docker exec netgescon_demo_db mysqldump -u root -p"$DEMO_DB_ROOT_PASSWORD" "$DEMO_DB_DATABASE" > backup-demo.sql ``` ## Note operative - `demo` è separata da `prod` (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.