Wat is Docker Compose?
Docker Compose is een tool die je helpt bij het definiëren en uitvoeren van multi-container applicaties. Typisch zal een applicatie uit meer dan één architectuurcomponent bestaan. Bijvoorbeeld een database en een applicatieserver. Om dergelijke meerdere containers moeiteloos te beheren, wordt Docker Compose veelvuldig gebruikt door ontwikkelaars over de hele wereld.
Een Docker Compose-tool wordt geleverd met een compose-bestand dat kan worden gebruikt om de applicatiestack te definiëren en hoe elke container met elkaar interageert. Dit Compose-bestand is een tekstbestand dat kan worden gemaakt met je reguliere teksteditor. Je kunt zoveel containers configureren als je wilt in het Compose-bestand en kunt definiëren hoe je ze wilt bouwen en waar je de gegevens wilt opslaan. En het beste is dat je je hele applicatie kunt starten of stoppen met één enkel commando in Docker Compose.
Typisch moet een ontwikkelaar die Docker Compose wil gebruiken om meerdere containers te beheren, deze drie stappen doorlopen:
Een Dockerfile is net als een Compose-bestand een ander tekstbestand dat instructies bevat over hoe je een afbeelding moet bouwen. Deze Dockerfile wordt omgezet in een afbeelding en vervolgens in een container, wat niets anders is dan de draaiende instantie van een afbeelding. Een Compose-bestand wordt gebruikt om al deze gecreëerde containers met elkaar te verbinden en ze samen uit te voeren als een complete applicatie, in plaats van elke container afzonderlijk uit te voeren. Om een volledig begrip te krijgen van hoe Docker Compose werkt, moeten we iets meer begrijpen over een Compose-bestand.
Wat is een Compose-bestand?
Een Compose-bestand of een YAML-bestand is een tekstbestand waarin alle details van de services samen met netwerk- en volumedetails worden vermeld. De standaardnaam van het YAML-bestand is docker-compose.yml. Een YAML-bestand is zowel leesbaar voor mensen als uiterst eenvoudig te maken. Het is ook veelzijdig en staat het gebruik van zowel .yml als .yaml formaten toe.
Een YAML-bestand bestaat in wezen uit 4 delen:
- Versie: Dit is niets anders dan de syntaxisversie van het compose-bestand. Als er geen versie is gespecificeerd, wordt versie 1 beschouwd als de standaardversie.
- Services: Dit is het hart van het YAML-bestand waarin je de containerdetails kunt vinden die je start of stopt met behulp van Docker Compose.
- Netwerken: In dit deel van het compose-bestand kun je het standaardnetwerk van je applicatie definiëren of het verbinden met een extern netwerk of zelfs een netwerk specifiek voor de app definiëren.
- Volumes: Het volumes-gedeelte koppelt de bronmappen op de hostmachine. Als er een overeenkomend pad bestaat, wordt het overschreven door het gekoppelde pad. Nu je begrijpt wat een Compose-bestand is, laten we het gebruiken om uit te leggen hoe Docker Compose werkt.
Hoe Docker compose werkt?
Als eerste stap bouw je een YAML-bestand dat bestaat uit meer dan één service. De onderstaande schermafbeelding is een YAML-bestand dat twee services, 'helloworld' en 'database', laat zien die we hebben gemaakt.
De versie '3' hier geeft de versie van de syntaxis aan die we hebben gebruikt om het compose-bestand te bouwen. De nieuwste versie is 3 en wordt ook aanbevolen.
De afbeelding onder elke service is niets anders dan de Docker-afbeelding die wordt opgehaald uit het Docker-register.
De restart-instructie wordt gebruikt om Docker te instrueren dat de container automatisch moet worden herstart in geval van een crash. Op dezelfde manier vervangt de container_name een optionele instructie de willekeurig gegenereerde containernaam door het systeem.
Volumes geven het pad aan van de gedeelde directory tussen de container en de host, terwijl poorten ons helpen om toegang te krijgen tot de server van buiten de container of met andere woorden vanaf onze computer.
De volgende stap is om beide containers samen te starten in Docker Compose. Gebruik het onderstaande commando om dat te doen -
Je kunt altijd controleren of beide containers actief en draaiend zijn met behulp van het onderstaande commando –
De uitvoer van dit commando zal de status van beide containers weergeven als actief (up) als het compose-bestand correct is gedefinieerd.
Om beide containers te stoppen, kun je het onderstaande commando gebruiken -