docs: explain loading deploy environment

This commit is contained in:
2026-07-12 10:46:50 +02:00
parent 7f8346ff58
commit 0b65135153
+35 -1
View File
@@ -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