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 DevOps Bootcamp 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 DevOps Bootcamp, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso DevOps Bootcamp 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.
Impara DevOps Bootcamp con un tutor IA — gratis
Scrivi ed esegui vero codice nel tuo browser, ricevi aiuto istantaneo da un tutor IA disponibile 24/7, e riprendi da dove hai lasciato sul web o nell'app.
- Corsi
- 142
- Lezioni
- 568
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 DevOps Bootcamp, passa a CoddyKit PRO. Il corso DevOps Bootcamp 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 DevOps Bootcamp 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 DevOps Bootcamp?
Non è richiesta alcuna esperienza precedente. DevOps Bootcamp 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 DevOps Bootcamp?
Sì. Ogni lezione DevOps Bootcamp 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