Installare Trama con Docker
Trama gira in container Docker: applicazione, web server, database, cache e un server di posta per i test. Questa guida segue il README (si apre in una nuova scheda) del repository.
Prerequisiti
- Docker Desktop, oppure Docker Engine con il plugin Compose.
- Almeno 4 GB di RAM liberi.
- Queste porte libere sull'host:
| Porta | Servizio | Variabile |
|---|---|---|
| 8081 | Trama (web) | TRAMA_HTTP_PORT |
| 5432 | PostgreSQL | TRAMA_DB_PORT |
| 6379 | Redis | TRAMA_REDIS_PORT |
| 1025 | Mailpit, SMTP | TRAMA_MAIL_SMTP_PORT |
| 8025 | Mailpit, interfaccia web | TRAMA_MAIL_UI_PORT |
| 5173 | Vite, solo per lo sviluppo | TRAMA_VITE_PORT |
Installazione rapida
Sette passi, gli stessi del README. Esegui i comandi nella cartella in cui vuoi installare Trama.
-
Passo 1: Clona il repository
$ git clone https://github.com/lejubila/trama-dev.git trama $ cd trama -
Passo 2: Configura l'ambiente
Il secondo comando allinea l'utente del container al proprietario della cartella: senza, composer e npm non riescono a scrivere
vendor/enode_modules/.$ cp .env.example .env $ sed -i "s/^TRAMA_UID=.*/TRAMA_UID=$(id -u)/; s/^TRAMA_GID=.*/TRAMA_GID=$(id -g)/" .env -
Passo 3: Avvia i container
La prima volta costruisce l'immagine dell'applicazione e richiede qualche minuto.
$ docker compose up -d --build -
Passo 4: Installa le dipendenze PHP
$ docker compose exec app composer install -
Passo 5: Genera la chiave e prepara il database
--seedcarica i dati dimostrativi: clienti di esempio e i tre utenti elencati sotto.$ docker compose exec app php artisan key:generate $ docker compose exec app php artisan migrate --seed -
Passo 6: Collega la cartella dei file caricati
Crea il collegamento
public/storage→storage/app/public, che serve per foto, planimetrie e icone.$ docker compose exec app php artisan storage:link -
Passo 7: Compila l'interfaccia
Durante lo sviluppo usa
docker compose exec app npm run deval posto dinpm run build.$ docker compose exec app npm install $ docker compose exec app npm run build
Primo accesso
Apri http://localhost:8081 e accedi con uno degli utenti di esempio. Le email inviate da Trama non escono dal tuo computer: le trovi in Mailpit su http://localhost:8025.
| Ruolo | Password | Cosa può fare | |
|---|---|---|---|
| Admin | [email protected] | password | Gestisce utenti, clienti e tutti i dati |
| Tecnico | [email protected] | password | Gestisce i dati di tutti i clienti |
| Cliente | [email protected] | password | Consulta i clienti a cui è assegnato |
Risoluzione dei problemi
vendor does not exist and could not be created o permessi negati
Lo stesso problema si presenta come permessi negati su storage/ o node_modules/. I comandi nel container girano come utente app, con UID e GID presi da TRAMA_UID e TRAMA_GID nel .env (default 1000). Devono coincidere con il proprietario della cartella del progetto sull'host.
-
Confronta il proprietario della cartella con il tuo utente.
$ ls -ldn . # UID e GID proprietari della cartella $ id -u; id -g # UID e GID del tuo utente -
Imposta
TRAMA_UIDeTRAMA_GIDnel.envcon quei valori, poi ricostruisci le immagini.$ docker compose build app scheduler && docker compose up -d -
Se la cartella è stata clonata da root, prima rendila tua.
$ sudo chown -R $(id -u):$(id -g) .
Una porta è già in uso
Se docker compose up segnala che una porta è già allocata, cambia la variabile TRAMA_*_PORT corrispondente nel .env (vedi Prerequisiti) e rilancia docker compose up -d.
Comandi utili
Shell nel container dell'applicazione
$ docker compose exec app bashTinker (console di Laravel)
$ docker compose exec app php artisan tinkerTest
$ docker compose exec app php artisan testFormattazione del codice (Pint)
$ docker compose exec app ./vendor/bin/pintAnalisi statica (PHPStan)
$ docker compose exec app ./vendor/bin/phpstan analyseWorker delle code — parte già nel container scheduler
$ docker compose exec app php artisan queue:workReset completo del database — cancella tutto e ricarica i dati di esempio
$ docker compose exec app php artisan migrate:fresh --seedIcone di default: installa quelle mancanti senza toccare quelle personalizzate
$ docker compose exec app php artisan icons:defaultsIcone di default: aggiorna il set con le icone globali impostate ora
$ docker compose exec app php artisan icons:defaults --exportPubblicare una demo
Trama può funzionare come demo pubblica: i visitatori entrano con un clic, modificano i dati (tranne gli utenti) e ogni giorno tutto torna allo stato iniziale. È così che funziona demo.tramanet.work.
-
Passo 1: Prepara i dati
Crea, anche in locale, un cliente dimostrativo curato, con foto, planimetrie, Wi-Fi, VPN, documenti e snapshot, ed esportalo da Clienti → Esporta dati. Metti lo
.zipindatabase/demo/: ogni archivio presente lì diventa un cliente della demo. -
Passo 2: Configura il
.envdel server demoAPP_ENV=production APP_DEBUG=false MAIL_MAILER=log DEMO_MODE=true [email protected] DEMO_USER_PASSWORD=demo DEMO_RESET_TIME=03:00 DEMO_TIMEZONE=Europe/Rome # Se sull'host le porte di default sono occupate: APP_URL=http://tuo-host:8083 SANCTUM_STATEFUL_DOMAINS=tuo-host:8083 TRAMA_HTTP_PORT=8083 TRAMA_REDIS_PORT=6380 -
Passo 3: Avvia lo scheduler ed esegui il primo popolamento
Da qui in poi il container
schedulerripete il reset ogni giorno all'oraDEMO_RESET_TIME, nel fusoDEMO_TIMEZONE.$ docker compose up -d scheduler $ docker compose exec app php artisan demo:reset
Cosa cambia in modalità demo
- La pagina di accesso mostra il pulsante «Entra nella demo» e le credenziali.
- Un banner su ogni pagina avvisa del ripristino quotidiano, con il conto alla rovescia; dopo un reset compare un avviso.
- Sono disattivati gestione utenti, modifica di profilo, email e password, eliminazione dell'account, token API, assegnazione degli utenti ai clienti e recupero password.
- Lingua e cliente attivo si salvano nella sessione di ogni visitatore, perché l'account demo è condiviso.
Aggiornare
-
Passo 1: Fai un backup del database
$ docker compose exec -T postgres pg_dump -U trama trama > trama-backup.sql -
Passo 2: Scarica la nuova versione
$ git pull -
Passo 3: Ricostruisci e riavvia i container
Serve nel caso sia cambiata l'immagine dell'applicazione.
$ docker compose up -d --build -
Passo 4: Aggiorna dipendenze, database e interfaccia
Con
APP_ENV=production,migratechiede conferma prima di procedere.$ docker compose exec app composer install $ docker compose exec app php artisan migrate $ docker compose exec app npm install $ docker compose exec app npm run build
Per aggiungere le eventuali nuove icone di default senza toccare quelle personalizzate, esegui anche docker compose exec app php artisan icons:defaults.