Miljøvariabler og Konfigurasjon i Compose
Bruk av miljøvariabler i docker-compose.yml
Miljøvariabler gir fleksible og gjenbrukbare Docker Compose-konfigurasjoner. Ved å definere variabler unngår du å hardkode verdier som porter, bildeversjoner eller påloggingsinformasjon direkte i docker-compose.yml-filen. I stedet refererer du til disse variablene, og Docker Compose setter inn verdiene ved kjøring. Denne tilnærmingen er spesielt nyttig når du skal distribuere samme applikasjon til ulike miljøer, som utvikling, testing eller produksjon.
For å definere og bruke miljøvariabler i Compose-filen, følg disse stegene:
- Lagre miljøvariabler i en
.env-fil i samme mappe somdocker-compose.yml; - Referer til variabler i Compose-filen med
${VARIABLE_NAME}-syntaksen; - Overstyr variabler ved å angi dem direkte i skallet eller som del av CI/CD-pipelinen.
Anta at du vil konfigurere databasepassord og applikasjonsport med miljøvariabler. Opprett en .env-fil med innholdet:
DB_PASSWORD=supersecret
APP_PORT=8080
I docker-compose.yml refererer du til disse variablene slik:
version: "3.8"
services:
web:
image: myapp:latest
ports:
- "${APP_PORT}:80"
environment:
- DB_PASSWORD=${DB_PASSWORD}
Når du kjører docker-compose up, vil Docker Compose sette inn verdiene fra .env-filen i konfigurasjonen. Denne metoden holder sensitiv eller miljøspesifikk informasjon utenfor Compose-filen og gjør oppsettet ditt mer portabelt.
Håndtering av hemmeligheter og sensitiv data i Compose-filer
Selv om miljøvariabler er praktiske, er de ikke alltid den sikreste måten å håndtere sensitiv informasjon som passord, API-nøkler eller sertifikater på. Miljøvariabler kan noen ganger eksponeres gjennom logger, prosesslister eller versjonskontroll hvis de ikke håndteres forsiktig. For å øke sikkerheten kan du bruke flere teknikker for å håndtere hemmeligheter i Docker Compose:
- Lagre sensitive verdier i en separat
.env-fil og sørg for at denne filen er ekskludert fra versjonskontroll med.gitignore; - Bruk Docker Compose sin støtte for Docker secrets hvis du distribuerer med Docker Swarm, som lar deg montere hemmeligheter sikkert som filer inne i containere;
- Referer til hemmeligheter som filer på verten og monter dem inn i containeren ved å bruke
volumes-nøkkelen i Compose-filen.
Eksempel: For å unngå å eksponere et databasepassord, lagre det i en fil kalt db_password.txt og monter den inn i containeren:
services:
db:
image: postgres:latest
volumes:
- ./db_password.txt:/run/secrets/db_password
environment:
- POSTGRES_PASSWORD_FILE=/run/secrets/db_password
Denne tilnærmingen holder selve hemmeligheten utenfor Compose-filen og miljøvariabler, og reduserer risikoen for utilsiktet eksponering. Gå alltid gjennom konfigurasjonen og arbeidsflytene dine for å sikre at hemmeligheter er beskyttet, og aldri legg sensitiv informasjon i versjonskontroll.
Takk for tilbakemeldingene dine!
Spør AI
Spør AI
Spør om hva du vil, eller prøv ett av de foreslåtte spørsmålene for å starte chatten vår
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 og Konfigurasjon i Compose
Sveip for å vise menyen
Bruk av miljøvariabler i docker-compose.yml
Miljøvariabler gir fleksible og gjenbrukbare Docker Compose-konfigurasjoner. Ved å definere variabler unngår du å hardkode verdier som porter, bildeversjoner eller påloggingsinformasjon direkte i docker-compose.yml-filen. I stedet refererer du til disse variablene, og Docker Compose setter inn verdiene ved kjøring. Denne tilnærmingen er spesielt nyttig når du skal distribuere samme applikasjon til ulike miljøer, som utvikling, testing eller produksjon.
For å definere og bruke miljøvariabler i Compose-filen, følg disse stegene:
- Lagre miljøvariabler i en
.env-fil i samme mappe somdocker-compose.yml; - Referer til variabler i Compose-filen med
${VARIABLE_NAME}-syntaksen; - Overstyr variabler ved å angi dem direkte i skallet eller som del av CI/CD-pipelinen.
Anta at du vil konfigurere databasepassord og applikasjonsport med miljøvariabler. Opprett en .env-fil med innholdet:
DB_PASSWORD=supersecret
APP_PORT=8080
I docker-compose.yml refererer du til disse variablene slik:
version: "3.8"
services:
web:
image: myapp:latest
ports:
- "${APP_PORT}:80"
environment:
- DB_PASSWORD=${DB_PASSWORD}
Når du kjører docker-compose up, vil Docker Compose sette inn verdiene fra .env-filen i konfigurasjonen. Denne metoden holder sensitiv eller miljøspesifikk informasjon utenfor Compose-filen og gjør oppsettet ditt mer portabelt.
Håndtering av hemmeligheter og sensitiv data i Compose-filer
Selv om miljøvariabler er praktiske, er de ikke alltid den sikreste måten å håndtere sensitiv informasjon som passord, API-nøkler eller sertifikater på. Miljøvariabler kan noen ganger eksponeres gjennom logger, prosesslister eller versjonskontroll hvis de ikke håndteres forsiktig. For å øke sikkerheten kan du bruke flere teknikker for å håndtere hemmeligheter i Docker Compose:
- Lagre sensitive verdier i en separat
.env-fil og sørg for at denne filen er ekskludert fra versjonskontroll med.gitignore; - Bruk Docker Compose sin støtte for Docker secrets hvis du distribuerer med Docker Swarm, som lar deg montere hemmeligheter sikkert som filer inne i containere;
- Referer til hemmeligheter som filer på verten og monter dem inn i containeren ved å bruke
volumes-nøkkelen i Compose-filen.
Eksempel: For å unngå å eksponere et databasepassord, lagre det i en fil kalt db_password.txt og monter den inn i containeren:
services:
db:
image: postgres:latest
volumes:
- ./db_password.txt:/run/secrets/db_password
environment:
- POSTGRES_PASSWORD_FILE=/run/secrets/db_password
Denne tilnærmingen holder selve hemmeligheten utenfor Compose-filen og miljøvariabler, og reduserer risikoen for utilsiktet eksponering. Gå alltid gjennom konfigurasjonen og arbeidsflytene dine for å sikre at hemmeligheter er beskyttet, og aldri legg sensitiv informasjon i versjonskontroll.
Takk for tilbakemeldingene dine!