DevOps Bootcamp · Lezione

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.

Lezione 4 di 413 passaggi

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: secret

Formato 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=secret

Il 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=8080

Sostituzione 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.env

Regole 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 -e ha 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 config

Tenere 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
.env

Verifica 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 .env alimenta la sostituzione di ${VAR}
  • :- fornisce valori predefiniti, mentre :? indica i valori obbligatori
  • docker compose config mostra il risultato risolto

In questo modo un unico file Compose è portabile in qualsiasi ambiente.

Gratis per iniziare

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

  1. Che cos’è Docker Compose?
  2. Scrittura di un file Compose
  3. Distribuzione di app multi-servizio
  4. Variabili d'ambiente e file .env
← Torna a DevOps Bootcamp