Wat is Docker Compose en hoe gebruik je het?

0
373

Docker Compose is een tool die u kunt gebruiken om de implementaties van veel verschillende Docker-containers. Het is een belangrijk hulpmiddel voor elke toepassing die meerdere microservices nodig heeft, omdat elke service gemakkelijk in een afzonderlijk beheerde container kan worden geplaatst.

Wat Doet Docker Compose dat?

Docker-containers worden gebruikt voor het uitvoeren van applicaties in een geïsoleerde omgeving. Het is tegenwoordig heel gewoon om applicatie-implementaties in Docker te zien gebeuren vanwege de vele voordelen die het met zich meebrengt. Het is echter vaak niet zo eenvoudig als het runnen van een enkele container. Meestal zijn er veel containers die samenkomen om te fungeren als één samenhangende service die bestaat uit veel bewegende delen.

Het beheren van al deze tijdens de implementatie is rommelig, dus om het op te ruimen, biedt Docker Docker Compose, een configuratietool die wordt gebruikt om meerdere containers tegelijk te laten draaien. U kunt alle configuraties in één YAML-bestand definiëren en vervolgens alle containers met één opdracht starten.

In plaats van al uw services in één grote container te hebben, kunt u met Docker Compose ze opsplitsen in afzonderlijke handzame containers. Dit is zowel beter voor het bouwen als voor de implementatie, omdat u ze allemaal in afzonderlijke codebases kunt beheren en u niet elke afzonderlijke container handmatig hoeft te starten.

Het gebruik van Docker Compose is een proces in drie stappen:

  • Bouw de componentafbeeldingen met hun Dockerfiles of haal ze uit een register.
  • Definieer alle componentservices in een docker-compose.yml bestand.
  • Voer ze allemaal samen uit met de docker-compose CLI.

Docker Compose is niet een ander soort Dockerfile. U moet nog steeds uw Docker-containers bouwen en publiceren met behulp van een Dockerfile. Maar in plaats van ze rechtstreeks uit te voeren, kunt u Docker Compose gebruiken om de configuratie van een implementatie met meerdere containers te beheren.

Hoe gebruik je Docker Compose?

De configuratie voor een docker-compositiebestand wordt gedaan in docker-compose.yml. Je hoeft dit niet als een Dockerfile in de root van je project te plaatsen. In feite kan het overal naartoe, omdat het niet afhankelijk is van een andere code. Als u de afbeeldingen echter lokaal bouwt, moet deze in een projectmap worden geplaatst met de code die wordt gebouwd.

Advertentie

Een Compose-configuratiebestand ziet er ongeveer als volgt uit. Deze configuratie voert een WordPress-instantie uit met behulp van de wordpress-container van de Docker Hub. Dit is echter afhankelijk van een MySQL-database, die ook door Compose is gemaakt.

versie: '3' services: db: image: mysql:5.7 volumes: – db_data:/var/lib/mysql herstart: altijd omgeving: MYSQL_ROOT_PASSWORD: rootpasswordchangeme MYSQL_DATABASE: wordpress MYSQL_USER: gebruikersnaamchangeme MYSQL_PASSWORD: hangt af van imagechangeme woord: wordpress:laatste poorten: – “8000:80” herstart: altijd omgeving: WORDPRESS_DB_HOST: db:3306 WORDPRESS_DB_USER: gebruikersnaamchangeme WORDPRESS_DB_PASSWORD: wachtwoordchangeme volumes: db_data:

Laten we eens kijken naar het formaat van dit bestand. Ten eerste een versienummer, aangezien de syntaxis kan veranderen afhankelijk van de versie die u gebruikt.

Vervolgens een lijst met services. De eerste heet “db,” en gebruikt de mysql:5.7-container, ingesteld om altijd opnieuw op te starten, en met omgevingsvariabelen om de database te configureren met een gebruiker en wachtwoord. Om gegevens te behouden tijdens het opnieuw opstarten, is deze image geconfigureerd met een Docker-volume dat is gekoppeld aan de MySQL-gegevensdirectory.

De andere service is “wordpress,” die afhankelijk is van de databaseservice, zodat Docker ervoor zorgt dat de database wordt gestart voordat deze wordt uitgevoerd. Het stelt poort 80 bloot als poort 8000 en stelt enkele omgevingsvariabelen in zodat het verbinding kan maken met MySQL. Merk op dat de host voor de database is ingesteld op db:3306, wat de WordPress-container vertelt om verbinding te maken met de “db” dienst.

Ten slotte worden de volumes gedefinieerd voor permanente opslag. Optioneel kunt u ook aangepaste netwerken voor de containers definiëren. Er zijn tal van uitgebreide opties die u kunt configureren, dus als u iets specifieks wilt doen, moet u de documentatie voor Docker Compose raadplegen.

Advertentie

Eenmaal geconfigureerd, is het starten van deze service eenvoudig. Voer gewoon docker-compose up uit, waarmee alle vereiste containers worden opgehaald en uw services worden gestart.

docker-compose up -d

En je zou de services moeten zien draaien op het systeem met docker ps. In dit geval ziet u dat WordPress correct werkt.

GERELATEERD: Hoe Docker en Docker Compose op Linux te installeren

Building Met Docker Compose

Docker Compose kan ook worden gebruikt binnen een Dockerfile-project en kan worden ingesteld om lokaal een image te bouwen en uit te voeren in plaats van uit de Docker Hub te halen.

Doen dus u hoeft alleen maar een build-sectie over de service toe te voegen. U kunt verschillende contextmappen instellen, evenals verschillende Dockerfiles voor verschillende afbeeldingen.

versie: “3.8” services: webapp: build: context: ./dir dockerfile: Dockerfile-alternate afbeelding: afbeeldingsnaam:tag

In in dit geval is de afbeelding: variabele ook ingesteld, maar hier wordt deze gebruikt om de afbeelding te taggen die is gemaakt door Docker Compose.