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, bilde-tagger eller påloggingsinformasjon direkte i docker-compose.yml-filen. I stedet refererer du til disse variablene, og Docker Compose erstatter dem med faktiske verdier ved kjøring. Denne metoden er spesielt nyttig når du skal bruke samme applikasjon i 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 terminalen 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 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 riktig. 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 bruker Docker Swarm, som lar deg montere hemmeligheter sikkert som filer inne i containerne;
- Referer til hemmeligheter som filer på vertsmaskinen og monter dem inn i containeren med
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 metoden holder selve hemmeligheten utenfor Compose-filen og miljøvariabler, og reduserer risikoen for utilsiktet eksponering. Gå alltid gjennom konfigurasjonen og arbeidsflyten din 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