Miljøvariabler og Konfiguration i Compose
Brug af miljøvariabler i docker-compose.yml
Miljøvariabler muliggør fleksible og genanvendelige Docker Compose-konfigurationer. Ved at definere variabler undgår du at hardkode værdier som porte, image-tags eller legitimationsoplysninger direkte i din docker-compose.yml-fil. I stedet refererer du til disse variabler, og Docker Compose indsætter deres værdier under kørsel. Denne metode er især nyttig, når den samme applikation skal implementeres i forskellige miljøer, såsom udvikling, test eller produktion.
For at definere og bruge miljøvariabler i din Compose-fil, følg disse trin:
- Gem miljøvariabler i en
.env-fil i samme mappe som dindocker-compose.yml; - Referer til variabler i din Compose-fil ved at bruge syntaksen
${VARIABLE_NAME}; - Tilsidesæt variabler ved at angive dem direkte i shellen eller som en del af din CI/CD-pipeline.
Antag, at du vil konfigurere databaseadgangskoden og applikationsporten ved hjælp af miljøvariabler. Opret en .env-fil med følgende indhold:
DB_PASSWORD=supersecret
APP_PORT=8080
I din docker-compose.yml refererer du til disse variabler således:
version: "3.8"
services:
web:
image: myapp:latest
ports:
- "${APP_PORT}:80"
environment:
- DB_PASSWORD=${DB_PASSWORD}
Når du kører docker-compose up, vil Docker Compose indsætte værdierne fra .env-filen i konfigurationen. Denne metode holder følsomme eller miljøspecifikke data ude af din Compose-fil og gør din opsætning mere portabel.
Håndtering af hemmeligheder og følsomme data i Compose-filer
Selvom miljøvariabler er praktiske, er de ikke altid den mest sikre måde at håndtere følsomme oplysninger som adgangskoder, API-nøgler eller certifikater på. Miljøvariabler kan undertiden blive eksponeret gennem logs, proceslister eller versionskontrol, hvis de ikke håndteres korrekt. For at forbedre sikkerheden kan du bruge flere teknikker til at håndtere hemmeligheder i Docker Compose:
- Gem følsomme værdier i en separat
.env-fil og sørg for, at denne fil er udelukket fra versionskontrol ved hjælp af.gitignore; - Brug Docker Compose's understøttelse af Docker secrets hvis du implementerer med Docker Swarm, hvilket gør det muligt at montere hemmeligheder sikkert som filer inde i containere;
- Referer til hemmeligheder som filer på værten og montér dem i containeren ved hjælp af
volumes-nøglen i din Compose-fil.
Eksempel: For at undgå at eksponere en databaseadgangskode, gem den i en fil kaldet db_password.txt og montér den i containeren:
services:
db:
image: postgres:latest
volumes:
- ./db_password.txt:/run/secrets/db_password
environment:
- POSTGRES_PASSWORD_FILE=/run/secrets/db_password
Denne metode holder selve hemmeligheden ude af Compose-filen og miljøvariablerne, hvilket mindsker risikoen for utilsigtet eksponering. Gennemgå altid din konfiguration og arbejdsgange for at sikre, at hemmeligheder er beskyttet, og undlad aldrig at committe følsomme data til versionskontrol.
Tak for dine kommentarer!
Spørg AI
Spørg AI
Spørg om hvad som helst eller prøv et af de foreslåede spørgsmål for at starte vores chat
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 Konfiguration i Compose
Stryg for at vise menuen
Brug af miljøvariabler i docker-compose.yml
Miljøvariabler muliggør fleksible og genanvendelige Docker Compose-konfigurationer. Ved at definere variabler undgår du at hardkode værdier som porte, image-tags eller legitimationsoplysninger direkte i din docker-compose.yml-fil. I stedet refererer du til disse variabler, og Docker Compose indsætter deres værdier under kørsel. Denne metode er især nyttig, når den samme applikation skal implementeres i forskellige miljøer, såsom udvikling, test eller produktion.
For at definere og bruge miljøvariabler i din Compose-fil, følg disse trin:
- Gem miljøvariabler i en
.env-fil i samme mappe som dindocker-compose.yml; - Referer til variabler i din Compose-fil ved at bruge syntaksen
${VARIABLE_NAME}; - Tilsidesæt variabler ved at angive dem direkte i shellen eller som en del af din CI/CD-pipeline.
Antag, at du vil konfigurere databaseadgangskoden og applikationsporten ved hjælp af miljøvariabler. Opret en .env-fil med følgende indhold:
DB_PASSWORD=supersecret
APP_PORT=8080
I din docker-compose.yml refererer du til disse variabler således:
version: "3.8"
services:
web:
image: myapp:latest
ports:
- "${APP_PORT}:80"
environment:
- DB_PASSWORD=${DB_PASSWORD}
Når du kører docker-compose up, vil Docker Compose indsætte værdierne fra .env-filen i konfigurationen. Denne metode holder følsomme eller miljøspecifikke data ude af din Compose-fil og gør din opsætning mere portabel.
Håndtering af hemmeligheder og følsomme data i Compose-filer
Selvom miljøvariabler er praktiske, er de ikke altid den mest sikre måde at håndtere følsomme oplysninger som adgangskoder, API-nøgler eller certifikater på. Miljøvariabler kan undertiden blive eksponeret gennem logs, proceslister eller versionskontrol, hvis de ikke håndteres korrekt. For at forbedre sikkerheden kan du bruge flere teknikker til at håndtere hemmeligheder i Docker Compose:
- Gem følsomme værdier i en separat
.env-fil og sørg for, at denne fil er udelukket fra versionskontrol ved hjælp af.gitignore; - Brug Docker Compose's understøttelse af Docker secrets hvis du implementerer med Docker Swarm, hvilket gør det muligt at montere hemmeligheder sikkert som filer inde i containere;
- Referer til hemmeligheder som filer på værten og montér dem i containeren ved hjælp af
volumes-nøglen i din Compose-fil.
Eksempel: For at undgå at eksponere en databaseadgangskode, gem den i en fil kaldet db_password.txt og montér den i containeren:
services:
db:
image: postgres:latest
volumes:
- ./db_password.txt:/run/secrets/db_password
environment:
- POSTGRES_PASSWORD_FILE=/run/secrets/db_password
Denne metode holder selve hemmeligheden ude af Compose-filen og miljøvariablerne, hvilket mindsker risikoen for utilsigtet eksponering. Gennemgå altid din konfiguration og arbejdsgange for at sikre, at hemmeligheder er beskyttet, og undlad aldrig at committe følsomme data til versionskontrol.
Tak for dine kommentarer!