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 du distribuerar samma applikation till 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 refererar du 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 uppsättning mer portabel.
Hantering av hemligheter och känslig data i Compose-filer
Även om miljövariabler är bekväma är de inte alltid det säkraste sättet att hantera känslig information 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 exkluderad 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 i containrar;
- Referera till hemligheter som filer på värddatorn och montera dem i containern med hjälp av nyckeln
volumesi 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 är skyddade, och lägg aldrig till känslig data i 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