Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lära Miljövariabler och Konfiguration i Compose | Arbeta med Docker Compose
Docker-Grunder

bookMiljövariabler och Konfiguration i Compose

Användning av miljövariabler i docker-compose.yml

Miljövariabler möjliggör flexibla och återanvändbara Docker Compose-konfigurationer. Genom att definiera variabler undviker du att hårdkoda värden som portar, bildtaggar eller autentiseringsuppgifter direkt i din docker-compose.yml-fil. Istället refererar du till dessa variabler, och Docker Compose ersätter deras värden vid körning. Detta tillvägagångssätt är särskilt användbart när samma applikation ska distribueras i olika miljöer, såsom utveckling, test eller produktion.

För att definiera och använda miljövariabler i din Compose-fil, följ dessa steg:

  • Spara miljövariabler i en .env-fil i samma katalog som din docker-compose.yml;
  • Referera till variabler i din Compose-fil med syntaxen ${VARIABLE_NAME};
  • Åsidosätt variabler genom att ange dem direkt i skalet eller som en del av din CI/CD-pipeline.

Anta att du vill konfigurera databaslösenordet och applikationsporten med hjälp av miljövariabler. Skapa en .env-fil med innehållet:

DB_PASSWORD=supersecret
APP_PORT=8080

I din docker-compose.yml, referera till dessa variabler enligt följande:

version: "3.8"
services:
  web:
    image: myapp:latest
    ports:
      - "${APP_PORT}:80"
    environment:
      - DB_PASSWORD=${DB_PASSWORD}

När du kör docker-compose up kommer Docker Compose att ersätta värdena från .env-filen i konfigurationen. Denna metod håller känslig eller miljöspecifik data utanför din Compose-fil och gör din installation mer portabel.

Hantering av hemligheter och känslig data i Compose-filer

Även om miljövariabler är praktiska är de inte alltid det säkraste sättet att hantera känslig information såsom lösenord, API-nycklar eller certifikat. Miljövariabler kan ibland exponeras via loggar, processlistor eller versionshantering om de inte hanteras noggrant. För att förbättra säkerheten kan du använda flera tekniker för att hantera hemligheter i Docker Compose:

  • Spara känsliga värden i en separat .env-fil och se till att denna fil är undantagen från versionshantering med .gitignore;
  • Använd Docker Compose-stöd för Docker secrets om du distribuerar med Docker Swarm, vilket gör det möjligt att säkert montera hemligheter som filer inuti containrar;
  • Referera till hemligheter som filer på värddatorn och montera dem i containern med hjälp av volumes-nyckeln i din Compose-fil.

Exempel: För att undvika att exponera ett databaslösenord, spara det i en fil som heter db_password.txt och montera den i containern:

services:
  db:
    image: postgres:latest
    volumes:
      - ./db_password.txt:/run/secrets/db_password
    environment:
      - POSTGRES_PASSWORD_FILE=/run/secrets/db_password

Detta tillvägagångssätt håller själva hemligheten utanför Compose-filen och miljövariabler, vilket minskar risken för oavsiktlig exponering. Granska alltid din konfiguration och dina arbetsflöden för att säkerställa att hemligheter skyddas, och begå aldrig känslig data till versionshantering.

question mark

Vad är den största fördelen med att använda miljövariabler i en Docker Compose-fil?

Select the correct answer

Var allt tydligt?

Hur kan vi förbättra det?

Tack för dina kommentarer!

Avsnitt 3. Kapitel 4

Fråga AI

expand

Fråga AI

ChatGPT

Fråga vad du vill eller prova någon av de föreslagna frågorna för att starta vårt samtal

Awesome!

Completion rate improved to 7.14

bookMiljövariabler och Konfiguration i Compose

Svep för att visa menyn

Användning av miljövariabler i docker-compose.yml

Miljövariabler möjliggör flexibla och återanvändbara Docker Compose-konfigurationer. Genom att definiera variabler undviker du att hårdkoda värden som portar, bildtaggar eller autentiseringsuppgifter direkt i din docker-compose.yml-fil. Istället refererar du till dessa variabler, och Docker Compose ersätter deras värden vid körning. Detta tillvägagångssätt är särskilt användbart när samma applikation ska distribueras i olika miljöer, såsom utveckling, test eller produktion.

För att definiera och använda miljövariabler i din Compose-fil, följ dessa steg:

  • Spara miljövariabler i en .env-fil i samma katalog som din docker-compose.yml;
  • Referera till variabler i din Compose-fil med syntaxen ${VARIABLE_NAME};
  • Åsidosätt variabler genom att ange dem direkt i skalet eller som en del av din CI/CD-pipeline.

Anta att du vill konfigurera databaslösenordet och applikationsporten med hjälp av miljövariabler. Skapa en .env-fil med innehållet:

DB_PASSWORD=supersecret
APP_PORT=8080

I din docker-compose.yml, referera till dessa variabler enligt följande:

version: "3.8"
services:
  web:
    image: myapp:latest
    ports:
      - "${APP_PORT}:80"
    environment:
      - DB_PASSWORD=${DB_PASSWORD}

När du kör docker-compose up kommer Docker Compose att ersätta värdena från .env-filen i konfigurationen. Denna metod håller känslig eller miljöspecifik data utanför din Compose-fil och gör din installation mer portabel.

Hantering av hemligheter och känslig data i Compose-filer

Även om miljövariabler är praktiska är de inte alltid det säkraste sättet att hantera känslig information såsom lösenord, API-nycklar eller certifikat. Miljövariabler kan ibland exponeras via loggar, processlistor eller versionshantering om de inte hanteras noggrant. För att förbättra säkerheten kan du använda flera tekniker för att hantera hemligheter i Docker Compose:

  • Spara känsliga värden i en separat .env-fil och se till att denna fil är undantagen från versionshantering med .gitignore;
  • Använd Docker Compose-stöd för Docker secrets om du distribuerar med Docker Swarm, vilket gör det möjligt att säkert montera hemligheter som filer inuti containrar;
  • Referera till hemligheter som filer på värddatorn och montera dem i containern med hjälp av volumes-nyckeln i din Compose-fil.

Exempel: För att undvika att exponera ett databaslösenord, spara det i en fil som heter db_password.txt och montera den i containern:

services:
  db:
    image: postgres:latest
    volumes:
      - ./db_password.txt:/run/secrets/db_password
    environment:
      - POSTGRES_PASSWORD_FILE=/run/secrets/db_password

Detta tillvägagångssätt håller själva hemligheten utanför Compose-filen och miljövariabler, vilket minskar risken för oavsiktlig exponering. Granska alltid din konfiguration och dina arbetsflöden för att säkerställa att hemligheter skyddas, och begå aldrig känslig data till versionshantering.

question mark

Vad är den största fördelen med att använda miljövariabler i en Docker Compose-fil?

Select the correct answer

Var allt tydligt?

Hur kan vi förbättra det?

Tack för dina kommentarer!

Avsnitt 3. Kapitel 4
some-alt