Variabili 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
.envnella stessa directory del filedocker-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
.envseparato 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
volumesnel 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.
Grazie per i tuoi commenti!
Chieda ad AI
Chieda ad AI
Chieda pure quello che desidera o provi una delle domande suggerite per iniziare la nostra conversazione
Awesome!
Completion rate improved to 7.14
Variabili 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
.envnella stessa directory del filedocker-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
.envseparato 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
volumesnel 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.
Grazie per i tuoi commenti!