netgescon-day0/docs/DEPLOY_DOCKER_MULTISITE.md

2.6 KiB

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:

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:
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:

./scripts/deploy-multisite.sh
  1. 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_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:

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 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.