126 lines
2.6 KiB
Markdown
126 lines
2.6 KiB
Markdown
# 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.
|