Meer informatie over Docker Compose

Docker Compose is een tool om multi-container Docker applicaties te definiëren en te beheren. Met Docker Compose kun je de services, netwerken en volumes die je applicatie nodig heeft, definiëren in een YAML-bestand. Dit maakt het gemakkelijk om je applicatie te starten, te stoppen en te beheren.

Hiervoor is de dockerfile al behandeld (Dockerfile). Bij het gebruik van een docker-compose zijn de dockerfiles van essentieel belang. De docker-compose.yml file zal in dezelfde map zitten als waar de projecten in staan. In de project mappen zullen de dockerfiles staan. Op deze manier kan de docker-compose herkennen welke dockerfiles aanwezig zijn.

Hieronder een voorbeeld van een docker-compose.yml.

version: '3'
services:
  web:
    image: nginx
    ports:
      - "80:80"
  db:
    image: postgres
    environment:
      POSTGRES_PASSWORD: example

Uitleg van de docker-compose.yml-commando’s

  1. Versie
version: '3'

Dit specificeert de versie van het Docker Compose-bestand. Versie 3 is een van de meest gebruikte versies en biedt verschillende functionaliteiten en verbeteringen ten opzichte van eerdere versies.

  1. Services
services:

Dit gedeelte definieert de verschillende services die door Docker Compose worden beheerd. Elke service komt overeen met een container die Docker Compose zal starten.

  1. Web
web:

Dit definieert een service genaamd web. Het bevat de configuratie voor een container die de nginx-afbeelding gebruikt.

  1. Image
image: nginx

Dit specificeert de Docker-afbeelding die moet worden gebruikt voor deze service. In dit geval wordt de officiële Nginx-afbeelding van Docker Hub gebruikt.

  1. Ports
ports: 80:80

Dit definieert poortkoppelingen tussen de hostmachine en de container. In dit geval(80:80) Verbindt poort 80 op de hostmachine met poort 80 in de container. Dit betekent dat als je naar http://localhost:80 gaat, je wordt doorgestuurd naar de Nginx-server in de container.

  1. Database
db: 

Dit definieert een service genaamd db. Het bevat de configuratie voor een container die de postgres-afbeelding gebruikt.

  1. Image
image: postgres

Dit specificeert de Docker-afbeelding die moet worden gebruikt voor deze service. In dit geval wordt de officiële PostgreSQL-afbeelding van Docker Hub gebruikt.

  1. Environment
environment: 

Dit gedeelte stelt omgevingsvariabelen in voor de container. In dit geval: Een wachtwoord

POSTGRES_PASSWORD: example

Stelt het wachtwoord voor de PostgreSQL-database in op example. Dit is noodzakelijk voor de initiële configuratie van de PostgreSQL-container, omdat het een wachtwoord vereist voor de postgres-gebruikersaccount.

Samenvatting

Dit docker-compose.yml-bestand definieert twee services:

  1. web: Een Nginx-webserver die toegankelijk is via poort 80 op de host.
  2. db: Een PostgreSQL-database met het wachtwoord example ingesteld voor de standaard postgres-gebruiker.

Met dit bestand kun je eenvoudig beide containers starten door het volgende commando uit te voeren:

docker-compose up

Dit commando zal de Nginx-webserver en de PostgreSQL-database opstarten en configureren zoals gespecificeerd in het docker-compose.yml-bestand.

Belangrijke commando’s

  • docker-compose up - Start alle services gedefinieerd in docker-compose.yml.
  • docker-compose down - Stopt en verwijdert alle containers, netwerken, en volumes gedefinieerd in docker-compose.yml.
  • docker-compose watch - Doet hetzelfde als docker-compose up met als toevoeging het automatisch uitvoeren van een aangegeven action.

Volgende stap: 7. Docker Volumes