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

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

question mark

Hva er hovedfordelen med å bruke miljøvariabler i en Docker Compose-fil?

Select the correct answer

Alt var klart?

Hvordan kan vi forbedre det?

Takk for tilbakemeldingene dine!

Seksjon 3. Kapittel 4

Spør AI

expand

Spør AI

ChatGPT

Spør om hva du vil, eller prøv ett av de foreslåtte spørsmålene for å starte chatten vår

Awesome!

Completion rate improved to 7.14

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

question mark

Hva er hovedfordelen med å bruke miljøvariabler i en Docker Compose-fil?

Select the correct answer

Alt var klart?

Hvordan kan vi forbedre det?

Takk for tilbakemeldingene dine!

Seksjon 3. Kapittel 4
some-alt