Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Impara Variabili d'Ambiente e Configurazione in Compose | Lavorare con Docker Compose
Fondamenti di Docker

bookVariabili d'Ambiente e Configurazione in Compose

Utilizzo delle variabili d'ambiente in docker-compose.yml

Le variabili d'ambiente consentono di creare configurazioni Docker Compose flessibili e riutilizzabili. Definendo delle variabili, si evita di inserire valori fissi come porte, tag delle immagini o credenziali direttamente nel file docker-compose.yml. Invece, si fa riferimento a queste variabili e Docker Compose sostituisce i loro valori durante l'esecuzione. Questo approccio è particolarmente utile quando si distribuisce la stessa applicazione in ambienti diversi, come sviluppo, test o produzione.

Per definire e utilizzare variabili d'ambiente nel file Compose, seguire questi passaggi:

  • Salvare le variabili d'ambiente in un file .env nella stessa directory del file docker-compose.yml;
  • Fare riferimento alle variabili nel file Compose utilizzando la sintassi ${VARIABLE_NAME};
  • Sovrascrivere le variabili passandole direttamente nella shell o come parte della pipeline CI/CD.

Supponiamo di voler configurare la password del database e la porta dell'applicazione tramite variabili d'ambiente. Creare un file .env contenente:

DB_PASSWORD=supersecret
APP_PORT=8080

Nel file docker-compose.yml, fare riferimento a queste variabili come segue:

version: "3.8"
services:
  web:
    image: myapp:latest
    ports:
      - "${APP_PORT}:80"
    environment:
      - DB_PASSWORD=${DB_PASSWORD}

Quando si esegue docker-compose up, Docker Compose sostituirà i valori dal file .env nella configurazione. Questo metodo mantiene i dati sensibili o specifici dell'ambiente fuori dal file Compose e rende la configurazione più portabile.

Gestione di segreti e dati sensibili nei file Compose

Sebbene le variabili d'ambiente siano comode, non sempre rappresentano il metodo più sicuro per gestire informazioni sensibili come password, chiavi API o certificati. Le variabili d'ambiente possono talvolta essere esposte tramite log, elenchi di processi o controllo versione se non gestite con attenzione. Per migliorare la sicurezza, è possibile utilizzare diverse tecniche per la gestione dei segreti in Docker Compose:

  • Salvare i valori sensibili in un file .env separato e assicurarsi che questo file sia escluso dal controllo versione tramite .gitignore;
  • Utilizzare il supporto di Docker Compose per Docker secrets se si distribuisce con Docker Swarm, che consente di montare in modo sicuro i segreti come file all'interno dei container;
  • Fare riferimento ai segreti come file presenti sull'host e montarli nel container utilizzando la chiave volumes nel file Compose.

Esempio: Per evitare di esporre una password del database, salvarla in un file chiamato db_password.txt e montarlo nel container:

services:
  db:
    image: postgres:latest
    volumes:
      - ./db_password.txt:/run/secrets/db_password
    environment:
      - POSTGRES_PASSWORD_FILE=/run/secrets/db_password

Questo approccio mantiene il segreto reale fuori dal file Compose e dalle variabili d'ambiente, riducendo il rischio di esposizione accidentale. Rivedere sempre la configurazione e i flussi di lavoro per garantire la protezione dei segreti e non commettere mai dati sensibili nel controllo versione.

question mark

Qual è il principale vantaggio dell'utilizzo delle variabili d'ambiente in un file Docker Compose?

Select the correct answer

Tutto è chiaro?

Come possiamo migliorarlo?

Grazie per i tuoi commenti!

Sezione 3. Capitolo 4

Chieda ad AI

expand

Chieda ad AI

ChatGPT

Chieda pure quello che desidera o provi una delle domande suggerite per iniziare la nostra conversazione

Awesome!

Completion rate improved to 7.14

bookVariabili d'Ambiente e Configurazione in Compose

Scorri per mostrare il menu

Utilizzo delle variabili d'ambiente in docker-compose.yml

Le variabili d'ambiente consentono di creare configurazioni Docker Compose flessibili e riutilizzabili. Definendo delle variabili, si evita di inserire valori fissi come porte, tag delle immagini o credenziali direttamente nel file docker-compose.yml. Invece, si fa riferimento a queste variabili e Docker Compose sostituisce i loro valori durante l'esecuzione. Questo approccio è particolarmente utile quando si distribuisce la stessa applicazione in ambienti diversi, come sviluppo, test o produzione.

Per definire e utilizzare variabili d'ambiente nel file Compose, seguire questi passaggi:

  • Salvare le variabili d'ambiente in un file .env nella stessa directory del file docker-compose.yml;
  • Fare riferimento alle variabili nel file Compose utilizzando la sintassi ${VARIABLE_NAME};
  • Sovrascrivere le variabili passandole direttamente nella shell o come parte della pipeline CI/CD.

Supponiamo di voler configurare la password del database e la porta dell'applicazione tramite variabili d'ambiente. Creare un file .env contenente:

DB_PASSWORD=supersecret
APP_PORT=8080

Nel file docker-compose.yml, fare riferimento a queste variabili come segue:

version: "3.8"
services:
  web:
    image: myapp:latest
    ports:
      - "${APP_PORT}:80"
    environment:
      - DB_PASSWORD=${DB_PASSWORD}

Quando si esegue docker-compose up, Docker Compose sostituirà i valori dal file .env nella configurazione. Questo metodo mantiene i dati sensibili o specifici dell'ambiente fuori dal file Compose e rende la configurazione più portabile.

Gestione di segreti e dati sensibili nei file Compose

Sebbene le variabili d'ambiente siano comode, non sempre rappresentano il metodo più sicuro per gestire informazioni sensibili come password, chiavi API o certificati. Le variabili d'ambiente possono talvolta essere esposte tramite log, elenchi di processi o controllo versione se non gestite con attenzione. Per migliorare la sicurezza, è possibile utilizzare diverse tecniche per la gestione dei segreti in Docker Compose:

  • Salvare i valori sensibili in un file .env separato e assicurarsi che questo file sia escluso dal controllo versione tramite .gitignore;
  • Utilizzare il supporto di Docker Compose per Docker secrets se si distribuisce con Docker Swarm, che consente di montare in modo sicuro i segreti come file all'interno dei container;
  • Fare riferimento ai segreti come file presenti sull'host e montarli nel container utilizzando la chiave volumes nel file Compose.

Esempio: Per evitare di esporre una password del database, salvarla in un file chiamato db_password.txt e montarlo nel container:

services:
  db:
    image: postgres:latest
    volumes:
      - ./db_password.txt:/run/secrets/db_password
    environment:
      - POSTGRES_PASSWORD_FILE=/run/secrets/db_password

Questo approccio mantiene il segreto reale fuori dal file Compose e dalle variabili d'ambiente, riducendo il rischio di esposizione accidentale. Rivedere sempre la configurazione e i flussi di lavoro per garantire la protezione dei segreti e non commettere mai dati sensibili nel controllo versione.

question mark

Qual è il principale vantaggio dell'utilizzo delle variabili d'ambiente in un file Docker Compose?

Select the correct answer

Tutto è chiaro?

Come possiamo migliorarlo?

Grazie per i tuoi commenti!

Sezione 3. Capitolo 4
some-alt