Docker Compose

De meeste toepassingen bevatten meer dan één Docker container om hun doel te dienen. Het bouwen en uitvoeren van meerdere containers met meerdere Dockerfiles is een omslachtig proces. Dit is waar een tool als Docker Compose van pas komt. Het helpt je om meerdere containers eenvoudig te beheren. Het beste is dat Docker Compose wordt geleverd als een pakket samen met Docker Desktop en dat het niet apart hoeft te worden geïnstalleerd.

Development
1 mei 2020
Ruud van Falier

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 -

Wat zijn de voordelen van het gebruik van Docker compose?

  1. Behoud van volumegegevens bij het aanmaken van containers: Alle volumes van de services worden opgeslagen in Compose. Telkens wanneer het compose-bestand wordt uitgevoerd, kopieert het alle volumes van de oude containers naar de nieuwe containers wanneer het containers vindt van een vorige run. Volumes zorgen er ook voor dat er geen gegevens verloren gaan die eerder zijn aangemaakt.
  2. Verbeterde snelheid door caching: Docker Compose cached de configuraties van een container bij het aanmaken ervan. Deze gecachte geheugen wordt gebruikt bij het opnieuw starten van bestaande services die niet zijn gewijzigd. Dit betekent een verbeterde snelheid van het aanbrengen van wijzigingen aan de omgeving.
  3. Ondersteuning voor variabelen: Docker Compose ondersteunt variabelen die helpen bij het aanpassen van de samenstelling voor verschillende omgevingen. Je kunt ook een blok tekst definiëren dat opnieuw kan worden gebruikt in het compose-bestand met behulp van uitbreidingsvelden. Dit wordt vaak gebruikt wanneer je dezelfde omgevingsobjecten moet instellen voor meerdere services.


Conclusie

Docker Compose is een integraal onderdeel geworden van veel applicaties dankzij de bruikbaarheid ervan bij het beheren van meerdere containers. Hoewel er verschillende alternatieven zijn voor Docker Compose, geven veel ontwikkelaars er nog steeds de voorkeur aan vanwege de eenvoud en gebruiksvriendelijkheid.

Wil je meer informatie? Neem dan contact op.

Cookies
Deze site gebruikt geanonimiseerde cookies. Klik op "Akkoord" als je akkoord gaat met het gebruik van cookies, of klik op "Aanpassen" om je voorkeuren te bepalen.
Deze site gebruikt geanonimiseerde cookies.