Miljövariabler och Konfiguration i Compose
Användning av miljövariabler i docker-compose.yml
Miljövariabler möjliggör flexibla och återanvändbara Docker Compose-konfigurationer. Genom att definiera variabler undviker du att hårdkoda värden som portar, bildtaggar eller autentiseringsuppgifter direkt i din docker-compose.yml-fil. Istället refererar du till dessa variabler, och Docker Compose ersätter deras värden vid körning. Detta tillvägagångssätt är särskilt användbart när samma applikation ska distribueras i olika miljöer, såsom utveckling, test eller produktion.
För att definiera och använda miljövariabler i din Compose-fil, följ dessa steg:
- Spara miljövariabler i en
.env-fil i samma katalog som dindocker-compose.yml; - Referera till variabler i din Compose-fil med syntaxen
${VARIABLE_NAME}; - Åsidosätt variabler genom att ange dem direkt i skalet eller som en del av din CI/CD-pipeline.
Anta att du vill konfigurera databaslösenordet och applikationsporten med hjälp av miljövariabler. Skapa en .env-fil med innehållet:
DB_PASSWORD=supersecret
APP_PORT=8080
I din docker-compose.yml, referera till dessa variabler enligt följande:
version: "3.8"
services:
web:
image: myapp:latest
ports:
- "${APP_PORT}:80"
environment:
- DB_PASSWORD=${DB_PASSWORD}
När du kör docker-compose up kommer Docker Compose att ersätta värdena från .env-filen i konfigurationen. Denna metod håller känslig eller miljöspecifik data utanför din Compose-fil och gör din installation mer portabel.
Hantering av hemligheter och känslig data i Compose-filer
Även om miljövariabler är praktiska är de inte alltid det säkraste sättet att hantera känslig information såsom lösenord, API-nycklar eller certifikat. Miljövariabler kan ibland exponeras via loggar, processlistor eller versionshantering om de inte hanteras noggrant. För att förbättra säkerheten kan du använda flera tekniker för att hantera hemligheter i Docker Compose:
- Spara känsliga värden i en separat
.env-fil och se till att denna fil är undantagen från versionshantering med.gitignore; - Använd Docker Compose-stöd för Docker secrets om du distribuerar med Docker Swarm, vilket gör det möjligt att säkert montera hemligheter som filer inuti containrar;
- Referera till hemligheter som filer på värddatorn och montera dem i containern med hjälp av
volumes-nyckeln i din Compose-fil.
Exempel: För att undvika att exponera ett databaslösenord, spara det i en fil som heter db_password.txt och montera den i containern:
services:
db:
image: postgres:latest
volumes:
- ./db_password.txt:/run/secrets/db_password
environment:
- POSTGRES_PASSWORD_FILE=/run/secrets/db_password
Detta tillvägagångssätt håller själva hemligheten utanför Compose-filen och miljövariabler, vilket minskar risken för oavsiktlig exponering. Granska alltid din konfiguration och dina arbetsflöden för att säkerställa att hemligheter skyddas, och begå aldrig känslig data till versionshantering.
Tack för dina kommentarer!
Fråga AI
Fråga AI
Fråga vad du vill eller prova någon av de föreslagna frågorna för att starta vårt samtal
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
Miljövariabler och Konfiguration i Compose
Svep för att visa menyn
Användning av miljövariabler i docker-compose.yml
Miljövariabler möjliggör flexibla och återanvändbara Docker Compose-konfigurationer. Genom att definiera variabler undviker du att hårdkoda värden som portar, bildtaggar eller autentiseringsuppgifter direkt i din docker-compose.yml-fil. Istället refererar du till dessa variabler, och Docker Compose ersätter deras värden vid körning. Detta tillvägagångssätt är särskilt användbart när samma applikation ska distribueras i olika miljöer, såsom utveckling, test eller produktion.
För att definiera och använda miljövariabler i din Compose-fil, följ dessa steg:
- Spara miljövariabler i en
.env-fil i samma katalog som dindocker-compose.yml; - Referera till variabler i din Compose-fil med syntaxen
${VARIABLE_NAME}; - Åsidosätt variabler genom att ange dem direkt i skalet eller som en del av din CI/CD-pipeline.
Anta att du vill konfigurera databaslösenordet och applikationsporten med hjälp av miljövariabler. Skapa en .env-fil med innehållet:
DB_PASSWORD=supersecret
APP_PORT=8080
I din docker-compose.yml, referera till dessa variabler enligt följande:
version: "3.8"
services:
web:
image: myapp:latest
ports:
- "${APP_PORT}:80"
environment:
- DB_PASSWORD=${DB_PASSWORD}
När du kör docker-compose up kommer Docker Compose att ersätta värdena från .env-filen i konfigurationen. Denna metod håller känslig eller miljöspecifik data utanför din Compose-fil och gör din installation mer portabel.
Hantering av hemligheter och känslig data i Compose-filer
Även om miljövariabler är praktiska är de inte alltid det säkraste sättet att hantera känslig information såsom lösenord, API-nycklar eller certifikat. Miljövariabler kan ibland exponeras via loggar, processlistor eller versionshantering om de inte hanteras noggrant. För att förbättra säkerheten kan du använda flera tekniker för att hantera hemligheter i Docker Compose:
- Spara känsliga värden i en separat
.env-fil och se till att denna fil är undantagen från versionshantering med.gitignore; - Använd Docker Compose-stöd för Docker secrets om du distribuerar med Docker Swarm, vilket gör det möjligt att säkert montera hemligheter som filer inuti containrar;
- Referera till hemligheter som filer på värddatorn och montera dem i containern med hjälp av
volumes-nyckeln i din Compose-fil.
Exempel: För att undvika att exponera ett databaslösenord, spara det i en fil som heter db_password.txt och montera den i containern:
services:
db:
image: postgres:latest
volumes:
- ./db_password.txt:/run/secrets/db_password
environment:
- POSTGRES_PASSWORD_FILE=/run/secrets/db_password
Detta tillvägagångssätt håller själva hemligheten utanför Compose-filen och miljövariabler, vilket minskar risken för oavsiktlig exponering. Granska alltid din konfiguration och dina arbetsflöden för att säkerställa att hemligheter skyddas, och begå aldrig känslig data till versionshantering.
Tack för dina kommentarer!