From 0b651351532cd315d0ae49400637ba1f73e58bc2 Mon Sep 17 00:00:00 2001 From: mptyl Date: Sun, 12 Jul 2026 10:46:50 +0200 Subject: [PATCH] docs: explain loading deploy environment --- docs/installazione-docker-4-contesti.md | 36 ++++++++++++++++++++++++- 1 file changed, 35 insertions(+), 1 deletion(-) diff --git a/docs/installazione-docker-4-contesti.md b/docs/installazione-docker-4-contesti.md index a5b56e1b..6e8570b0 100644 --- a/docs/installazione-docker-4-contesti.md +++ b/docs/installazione-docker-4-contesti.md @@ -71,7 +71,41 @@ set -a set +a ``` -In alternativa aggiungere `--env-file deploy/.env` a ogni comando `docker compose`. +Le tre righe fanno questo: + +1. `set -a` dice alla shell di esportare automaticamente tutte le variabili assegnate da + questo momento in poi; +2. `. ./deploy/.env` (il punto iniziale è l'abbreviazione di `source`) legge ed esegue il file + nella shell corrente. Le variabili diventano quindi disponibili a `docker compose` e ai + processi figli, senza aprire una nuova shell; +3. `set +a` disattiva l'esportazione automatica per evitare che assegnazioni successive vengano + esportate accidentalmente. + +Esempio: se `deploy/.env` contiene + +```dotenv +THT_MODEL_API_KEY_SECRET_FILE=deploy/secrets/model-api-key +``` + +dopo il comando `source` la shell possiede `THT_MODEL_API_KEY_SECRET_FILE` e Compose può usare +quel percorso per leggere il secret file. Il valore della API key non viene caricato in +`deploy/.env`: resta nel file separato sotto `deploy/secrets/`. + +La forma equivalente, senza modificare l'ambiente della shell, è passare il file direttamente a +Compose: + +```sh +docker compose --env-file deploy/.env -f compose.yaml -f deploy/compose.production.yaml \ + --profile external up --build --wait +``` + +Non usare `source`/`.` con file ricevuti da terzi senza averne verificato il contenuto: un file +`.env` sourced è codice shell, non un semplice formato dati. In questa guida il file viene creato +localmente da `deploy/env.example` e contiene solo assegnazioni di configurazione e percorsi. + +Per i comandi successivi si può quindi scegliere una sola delle due modalità: fare `source` +una volta all'inizio della sessione, oppure aggiungere `--env-file deploy/.env` a ogni comando +`docker compose`. Salvare invece ogni credenziale in un file separato dentro `ThothII/deploy/secrets/`. Sul sistema host il file deve essere leggibile solo dall'utente/servizio che esegue Docker (`0400` se solo