0Pricing
Docker & DevOps Fundamentals · 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.

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

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

  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 Docker & DevOps Fundamentals