Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lære Miljøvariabler og Konfiguration i Compose | Arbejde med Docker Compose
Docker Essentials

bookMiljø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 din docker-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.

question mark

Hvad er den største fordel ved at bruge miljøvariabler i en Docker Compose-fil?

Select the correct answer

Var alt klart?

Hvordan kan vi forbedre det?

Tak for dine kommentarer!

Sektion 3. Kapitel 4

Spørg AI

expand

Spørg AI

ChatGPT

Spørg om hvad som helst eller prøv et af de foreslåede spørgsmål for at starte vores chat

Suggested prompts:

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

bookMiljø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 din docker-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.

question mark

Hvad er den største fordel ved at bruge miljøvariabler i en Docker Compose-fil?

Select the correct answer

Var alt klart?

Hvordan kan vi forbedre det?

Tak for dine kommentarer!

Sektion 3. Kapitel 4
some-alt