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

Suggested prompts:

Can you explain how to override environment variables at runtime?

What are the best practices for keeping secrets secure in Docker Compose?

How do Docker secrets work with Compose files?

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