1.6 Docker Compose - dkmattiUCLL/IT-Landscape GitHub Wiki
Docker compose is een functionaliteit binnen docker om meerdere containers tegelijk te beheren. Je kunt het zien als een dirigent die ervoor zorgt dat meerdere containers zich op elkaar afstemmen en samenwerken. In dit voorbeeld gebruik ik een WordPress-container en een mySQL-container om op deze manier succesvol WordPress lokaal op mijn pc te draaien. Een Compose-bestand is zelf een .yaml-bestand, en wordt geschreven als Compose.yaml.
Voor we verder kunnen met het schrijven in het Compose bestand, moeten we ervoor zorgen dat het bestaat. Maak dus een bestand in je folder met de naam Compose.yaml.
Dit is hoe je bestand er zou moeten uitzien. Hieronder overloop ik wat alles betekent.
Services zegt eigenlijk niets meer dan welke services je gaat uitvoeren en maakt hier een container voor. Wij hebben de services "mysql" en "wordpress" genoemd maar we hadden ze bijvoorbeeld ook "database" en "website" kunnen noemen.
Image is een docker image zoals we die gewoon zijn. We laten de image hier niet zelf maken, maar nemen meteen al een bestaande docker image waardoor we ook geen Dockerfile in dit project moeten zetten.
Environment is waar we de settings meegeven. Dit kunnen dingen zijn zoals de username en password, poorten, hosts, en dingen in die aard. Omdat je niet wilt dat deze dingen altijd zichtbaar zijn, heb ik hier ook gebruik gemaakt van een .env bestand. Dit zorgt ervoor dat ik al deze info niet gewoon in de Compose schrijf, maar vanuit mijn .env file haal met de ${} syntax. Hieronder zie je zo een .env file.
ports beslist zoals we in de Dockerfile ook zagen, op welke poort in de container en op welke poort op je computer, de container zal draaien.
volumes geeft aan op welke plek op je computer, de data die gebruikt wordt in de container, moet bijgehouden worden. Dit is een soort van safety net, zodat als je een container perongeluk verwijdert al de interne data niet verloren gaat.
depends on zegt tegen het compose-bestand dat deze service niet mag runnen, voordat wat in depends on staat is opgestart. In dit geval mag de WordPress service pas opgestart worden wanneer de MySql service is opgestart.
In mijn geval is dit de folder wordpress. Hier navigeer ik met de cd command naartoe.
docker-compose up voert je Compose.yaml bestand uit en zorgt dat alle containers draaien. Als je dit bestand correct hebt ingesteld zouden deze nu ook in je Docker Desktop moeten verschijnen.
Als je je foldernaam (in dit geval wordpress) met de twee correcte containers hieronder ziet verschijnen, heb je succesvol een draaiende docker compose gemaakt!