netgescon-day0/docs/support/PERSISTENZA-DOCKER-157-E-DOCS-53.md

4.5 KiB
Executable File

Persistenza dati Docker .157 e sync documentazione .53

Obiettivo

Rendere esplicita la persistenza dei dati critici fuori dai volumi Docker anonimi o impliciti, e standardizzare il passaggio della documentazione operativa verso la macchina .53.

Decisione operativa

Per il multisite produzione/demo su 192.168.0.157 la persistenza deve vivere su disco host, non solo nel layer gestito da Docker:

  • MySQL produzione: /srv/netgescon/prod/mysql
  • storage Laravel produzione: /srv/netgescon/prod/storage
  • public produzione: /srv/netgescon/prod/public
  • bootstrap cache produzione: /srv/netgescon/prod/bootstrap-cache
  • redis produzione: /srv/netgescon/prod/redis
  • MySQL demo: /srv/netgescon/demo/mysql
  • storage Laravel demo: /srv/netgescon/demo/storage
  • public demo: /srv/netgescon/demo/public
  • bootstrap cache demo: /srv/netgescon/demo/bootstrap-cache
  • redis demo: /srv/netgescon/demo/redis
  • Traefik/Let's Encrypt: /srv/netgescon/traefik/letsencrypt
  • backup locali multisite: /srv/netgescon/backups/multisite

Questi path sono configurabili da docker/.env.multisite.

Script operativi introdotti

Preparazione path host

./scripts/ops/netgescon-prepare-multisite-host-paths.sh --env-file docker/.env.multisite --report

Effetti:

  • crea le directory host richieste dal compose
  • prepara le sottodirectory Laravel minime in storage/
  • imposta ownership compatibile con www-data per storage/cache/public

Deploy e update

Gli script:

  • ./scripts/deploy-multisite.sh
  • ./scripts/update-multisite.sh

ora eseguono automaticamente:

  1. generazione APP_KEY se manca
  2. preparazione path host persistenti
  3. build/recreate dei servizi Docker

Backup locale completo

./docker/backup-multisite.sh

Contenuto del backup:

  • dump SQL produzione
  • dump SQL demo
  • archivio tar.gz di prod/storage
  • archivio tar.gz di prod/public
  • archivio tar.gz di demo/storage
  • archivio tar.gz di demo/public
  • copia del file docker/.env.multisite

Output predefinito:

  • /srv/netgescon/backups/multisite

Backup incrementale documenti su Google Drive

./scripts/ops/netgescon-data-backup-incremental-gdrive.sh --env-file docker/.env.multisite

Default operativi:

  • sorgente: ${PROD_STORAGE_PATH}/app/amministratori
  • remoto: gdrive:NetGesconBackups/prod/documenti-amministratori

Questo copre la copia incrementale dei documenti per amministratore/stabile/fornitore gia presenti nello storage applicativo.

Per backup pre-update applicativo con zip e metadati continua a restare valido anche:

php artisan netgescon:preupdate-backup --admin-id=<ID> --drive --tag=pre-update

Procedura documentale verso .53

Principio

La sorgente ufficiale resta il repository Day0/Gitea. La .53 deve avere un mirror documentale pulito, separato dal checkout applicativo sporco o operativo.

Sync standard dopo ogni aggiornamento docs

./scripts/ai/sync_docs_to_53.sh --env-file docker/.env.multisite

Default:

  • host target: michele@192.168.0.53
  • mirror target: /var/www/netgescon-docs
  • bootstrap remoto: ~/netgescon/netgescon-day0/scripts/ai/bootstrap_docs_mirror.sh

Modalita mirror:

  • esegue sulla .53 il refresh del mirror docs da Gitea
  • mantiene .53 allineata al commit ufficiale
  • evita di usare come sorgente il checkout applicativo /var/www/netgescon

Modalita alternativa push:

./scripts/ai/sync_docs_to_53.sh --mode push --env-file docker/.env.multisite

Usarla solo per emergenze operative o bootstrap, non come flusso normale.

Verifica minima consigliata su .157

./scripts/ops/netgescon-prepare-multisite-host-paths.sh --env-file docker/.env.multisite --report
docker compose --env-file docker/.env.multisite -f docker/docker-compose.multisite.yml ps
du -sh /srv/netgescon/prod/mysql /srv/netgescon/prod/storage /srv/netgescon/demo/mysql /srv/netgescon/demo/storage

Verifica minima consigliata su .53

./scripts/ai/sync_docs_to_53.sh --env-file docker/.env.multisite
ssh michele@192.168.0.53 'test -f /var/www/netgescon-docs/docs/README.md && git -C /var/www/netgescon-docs rev-parse --short HEAD'

Criterio di successo

La procedura puo essere considerata attiva quando:

  1. i servizi prod_app e prod_db usano bind mount host visibili sotto /srv/netgescon
  2. i dump SQL e gli archivi storage/public vengono prodotti su disco host
  3. la copia incrementale verso Google Drive punta allo storage persistente host
  4. la .53 dispone di un mirror docs aggiornabile con un solo comando