Hantering av applikationer med flera containrar
Svep för att visa menyn
Vid utveckling av moderna applikationer behöver du ofta köra flera tjänster tillsammans—såsom webbservrar, databaser och cachelösningar—som måste kommunicera och fungera som ett enhetligt system. Docker Compose förenklar denna process genom att låta dig definiera alla dina tjänster, deras beroenden och hur de interagerar, allt i en enda docker-compose.yml-fil.
Definiera beroenden och tjänstelänkar i docker-compose.yml
I din docker-compose.yml kan varje tjänst deklarera beroenden och specificera hur den ansluter till andra. Nyckeln depends_on gör det möjligt att ange startordningen för tjänster, vilket säkerställer till exempel att en databas är igång innan din applikation försöker ansluta. Dessutom skapar Compose automatiskt ett standardnätverk för ditt projekt, vilket gör det enkelt för tjänster att upptäcka och kommunicera med varandra via tjänstens namn.
Anta att du har en webbapplikation som är beroende av en databas. I din Compose-fil definierar du tjänster så här:
version: "3.8"
services:
app:
build: .
depends_on:
- db
db:
image: postgres:15
Här:
- Tjänsten
appär beroende avdb; - Compose startar databascontainern före applikationen;
- Båda tjänsterna kan referera till varandra med tjänstens namn som värdnamn inom Compose-nätverket.
Strategier för att skala tjänster och uppdatera konfigurationer
Docker Compose gör det enkelt att skala tjänster horisontellt. Om din applikation behöver hantera mer trafik kan du öka antalet containrar för en tjänst med flaggan --scale när du kör docker compose up.
För att köra tre instanser av din applikationstjänst, använd:
docker compose up --scale app=3
- Detta kommando startar tre containrar för tjänsten
app; - Alla containrar är anslutna till samma nätverk och kan dela resurser, såsom en databas;
- Vid skalning, säkerställ att dina tjänster är stateless eller kan hantera flera instanser korrekt.
Att uppdatera konfigurationer i en Compose-miljö är enkelt:
- Ändra din
docker-compose.yml—till exempel, ändra miljövariabler, resursbegränsningar eller tjänstbilder; - Verkställ ändringarna med följande kommando:
docker compose up -d
- Detta kommando återskapar endast de tjänster vars konfiguration har ändrats, vilket minimerar driftstopp.
Övervakning och felsökning av applikationer med flera containrar med Compose
Vid körning av flera containrar är övervakning och felsökning avgörande. Docker Compose tillhandahåller verktyg som hjälper dig att övervaka hälsa och loggar för dina tjänster. Du kan visa utdata från alla containrar i realtid med:
docker compose logs -f
Detta kommando strömmar loggar från alla tjänster, vilket gör det enklare att upptäcka fel eller problem när de uppstår. Om du behöver fokusera på en specifik tjänst, ange dess namn:
docker compose logs db
För felsökning kan du gå in i en körande container med:
docker compose exec app sh
Detta kommando ger dig ett skal inuti app-containern, så att du kan inspektera filer, köra diagnostiska kommandon eller kontrollera miljövariabler. Övervakning av resursanvändning och containerhälsa kan också göras med standardverktyg i Docker, såsom docker stats.
1. Vilken nyckel i en docker-compose.yml-fil säkerställer att en tjänst startar före en annan?
2. Hur skalar du en tjänst med namnet worker till fem instanser med Docker Compose?
3. Vilket kommando använder du för att visa live-loggar från alla körande tjänster i en Compose-applikation?
Tack för dina kommentarer!
Fråga AI
Fråga AI
Fråga vad du vill eller prova någon av de föreslagna frågorna för att starta vårt samtal