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
- 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.
- 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.
- Web
web:
Dit definieert een service genaamd web
. Het bevat de configuratie voor een container die de nginx
-afbeelding gebruikt.
- 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.
- 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.
- Database
db:
Dit definieert een service genaamd db
. Het bevat de configuratie voor een container die de postgres
-afbeelding gebruikt.
- 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.
- 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:
web
: Een Nginx-webserver die toegankelijk is via poort 80 op de host.db
: Een PostgreSQL-database met het wachtwoordexample
ingesteld voor de standaardpostgres
-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 indocker-compose.yml
.docker-compose down
- Stopt en verwijdert alle containers, netwerken, en volumes gedefinieerd indocker-compose.yml
.docker-compose watch
- Doet hetzelfde alsdocker-compose up
met als toevoeging het automatisch uitvoeren van een aangegeven action.- Meer informatie over docker compose watch
Volgende stap: 7. Docker Volumes