Beheer van Multi-Container Applicaties
Veeg om het menu te tonen
Bij het bouwen van moderne applicaties is het vaak nodig om meerdere services samen te laten draaien—zoals webservers, databases en caches—die met elkaar moeten communiceren en als één systeem moeten functioneren. Docker Compose vereenvoudigt dit proces door je toe te staan alle services, hun afhankelijkheden en hun onderlinge interacties te definiëren in één enkel docker-compose.yml-bestand.
Afhankelijkheden en Servicekoppelingen definiëren in docker-compose.yml
In je docker-compose.yml kan elke service afhankelijkheden opgeven en specificeren hoe deze verbinding maakt met andere services. De depends_on-sleutel maakt het mogelijk de opstartvolgorde van services te bepalen, zodat bijvoorbeeld een database actief is voordat je applicatie probeert te verbinden. Daarnaast maakt Compose automatisch een standaardnetwerk aan voor je project, waardoor services elkaar eenvoudig kunnen vinden en met elkaar kunnen communiceren via de servicenaam.
Stel dat je een webapplicatie hebt die afhankelijk is van een database. In je Compose-bestand definieer je de services als volgt:
version: "3.8"
services:
app:
build: .
depends_on:
- db
db:
image: postgres:15
Hierbij geldt:
- De
app-service is afhankelijk vandb; - Compose start de databasecontainer voordat de applicatie wordt gestart;
- Beide services kunnen elkaar binnen het Compose-netwerk benaderen via de servicenaam als hostnaam.
Strategieën voor het Schalen van Services en het Bijwerken van Configuraties
Docker Compose maakt het eenvoudig om services horizontaal te schalen. Als je applicatie meer verkeer moet verwerken, kun je het aantal containers voor een service verhogen met de --scale-vlag bij het uitvoeren van docker compose up.
Om drie instanties van je applicatieservice te draaien, gebruik je:
docker compose up --scale app=3
- Met dit commando worden drie containers voor de
app-service gestart; - Alle containers zijn verbonden met hetzelfde netwerk en kunnen bronnen delen, zoals een database;
- Zorg er bij het schalen voor dat je services stateless zijn of meerdere instanties correct kunnen verwerken.
Het bijwerken van configuraties in een Compose-omgeving is eenvoudig:
- Pas je
docker-compose.ymlaan—bijvoorbeeld door omgevingsvariabelen, resource-limieten of service-images te wijzigen; - Breng de wijzigingen aan met het volgende commando:
docker compose up -d
- Dit commando hercreëert alleen de services waarvan de configuratie is gewijzigd, waardoor downtime wordt geminimaliseerd.
Monitoren en Problemen Oplossen bij Multi-Container Applicaties met Compose
Bij het draaien van meerdere containers zijn monitoring en probleemoplossing essentieel. Docker Compose biedt hulpmiddelen om de gezondheid en logs van je services te observeren. Je kunt de uitvoer van alle containers in realtime bekijken met:
docker compose logs -f
Dit commando streamt logs van alle services, waardoor het eenvoudiger wordt om fouten of problemen direct te signaleren. Als je je wilt richten op een specifieke service, geef dan de naam op:
docker compose logs db
Voor probleemoplossing kun je een draaiende container binnengaan met:
docker compose exec app sh
Dit commando geeft je een shell binnen de app-container, zodat je bestanden kunt inspecteren, diagnostische commando's kunt uitvoeren of omgevingsvariabelen kunt controleren. Het monitoren van resourcegebruik en de gezondheid van containers kan ook met standaard Docker-tools, zoals docker stats.
1. Welke sleutel in een docker-compose.yml-bestand zorgt ervoor dat de ene service start vóór een andere?
2. Hoe schaal je een service genaamd worker naar vijf instanties met Docker Compose?
3. Welk commando gebruik je om live logs van alle actieve services in een Compose-applicatie te bekijken?
Bedankt voor je feedback!
Vraag AI
Vraag AI
Vraag wat u wilt of probeer een van de voorgestelde vragen om onze chat te starten.