Variabili d'ambiente e file .env
Configuri in modo ordinato i servizi Compose usando variabili d'ambiente, sostituzione delle variabili e un file .env, così un unico file Compose funziona in sviluppo, staging e produzione.
Variabili d'ambiente e file .env è una lezione Docker & DevOps Fundamentals gratuita su CoddyKit. Questa è la lezione 4 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento Docker & DevOps Fundamentals, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso Docker & DevOps Fundamentals include 4 lezioni in totale.
Perché esternalizzare la configurazione?
Inserire password e porte direttamente in un file Compose è fragile e poco sicuro. Le variabili d'ambiente consentono di modificare il comportamento in base all'ambiente senza modificare il file YAML.
- Mantenga i segreti fuori dal controllo versione
- Riutilizzi un unico file Compose ovunque
- Sovrascriva i valori a runtime
La chiave environment
All'interno di un servizio, dichiari le variabili sotto environment come una mappa. Queste variabili vengono iniettate nel container all'avvio.
services:
db:
image: postgres:16
environment:
POSTGRES_USER: app
POSTGRES_PASSWORD: secretFormato elenco
La stessa chiave accetta anche un elenco di stringhe KEY=VALUE. Scelga il formato che ritiene più leggibile.
services:
db:
image: postgres:16
environment:
- POSTGRES_USER=app
- POSTGRES_PASSWORD=secretIl file .env
Compose legge automaticamente un file denominato .env nella directory del progetto. Definisca lì i valori una sola volta e vi faccia riferimento con la sostituzione ${VAR}.
# .env
PG_USER=app
PG_PASS=secret
WEB_PORT=8080Sostituzione delle variabili
Usi ${VAR} in qualsiasi punto del file Compose. Prima dell'analisi, Compose lo sostituisce con il valore proveniente da .env o dalla shell.
services:
db:
image: postgres:16
environment:
POSTGRES_USER: ${PG_USER}
POSTGRES_PASSWORD: ${PG_PASS}Valori predefiniti
Fornisca un valore alternativo con ${VAR:-default}. Se la variabile non è impostata o è vuota, viene usato il valore predefinito, mantenendo operativo lo stack anche senza un file .env completo.
ports:
- "${WEB_PORT:-80}:80"Variabili obbligatorie
Usi ${VAR:?message} per rendere obbligatoria una variabile. Se manca, Compose interrompe l'esecuzione mostrando il messaggio specificato, rilevando tempestivamente gli errori di configurazione.
environment:
API_KEY: ${API_KEY:?API_KEY must be set}La direttiva env_file
Per passare direttamente in un container un intero file di variabili (non solo per la sostituzione), usi env_file. Ogni riga diventa una variabile d'ambiente del container.
services:
api:
image: myapi:1.0
env_file:
- api.envRegole di precedenza
Quando una variabile viene definita in più punti, Compose applica un ordine di precedenza. L'ambiente della shell ha la precedenza su .env; una voce environment: esplicita ha la precedenza su env_file.
- La shell o la CLI con
-eha la precedenza - poi
environment: - poi
env_file - infine i valori predefiniti dell'immagine
Ispezionare i valori risolti
Eseguire docker compose config per stampare il file Compose completamente risolto, con tutte le sostituzioni applicate. È ottimo per verificare cosa verrà effettivamente eseguito.
docker compose configTenere i segreti fuori da Git
Eseguire il commit di un file .env.example con segnaposto e aggiungere il vero .env a .gitignore. Per i segreti reali in produzione, preferire Docker secrets alle variabili d'ambiente.
# .gitignore
.envVerifica rapida
Come funzionano i valori predefiniti nella sostituzione?
Riepilogo
Ora è possibile configurare Compose in modo ordinato usando i dati dell'ambiente:
environment:inietta variabili per ogni servizio- Un file
.envalimenta la sostituzione di${VAR} :-fornisce valori predefiniti, mentre:?indica i valori obbligatoridocker compose configmostra il risultato risolto
In questo modo un unico file Compose è portabile in qualsiasi ambiente.
Domande Frequenti
La lezione «Variabili d'ambiente e file .env» è gratuita?
Sì — il testo completo di «Variabili d'ambiente e file .env» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso Docker & DevOps Fundamentals, passa a CoddyKit PRO. Il corso Docker & DevOps Fundamentals include 4 lezioni in totale.
Cosa imparerò in «Variabili d'ambiente e file .env»?
Configuri in modo ordinato i servizi Compose usando variabili d'ambiente, sostituzione delle variabili e un file .env, così un unico file Compose funziona in sviluppo, staging e produzione. Eserciti Docker & DevOps Fundamentals con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.
Ho bisogno di esperienza per iniziare Docker & DevOps Fundamentals?
Non è richiesta alcuna esperienza precedente. Docker & DevOps Fundamentals su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 4 di 4.
Quanto tempo richiede la lezione «Variabili d'ambiente e file .env»?
La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.
Posso scrivere ed eseguire codice in questa lezione Docker & DevOps Fundamentals?
Sì. Ogni lezione Docker & DevOps Fundamentals include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.
Tutte le lezioni di questo corso
- Che cos’è Docker Compose?
- Scrittura di un file Compose
- Distribuzione di app multi-servizio
- Variabili d'ambiente e file .env