Docker en de basis van DevOps · Les

Een Compose-bestand schrijven

Leer de YAML-syntaxis voor `docker-compose.yml` om services, netwerken en volumes te definiëren.

Les 2 van 411 stappen

Een Compose-bestand schrijven is een gratis Docker en de basis van DevOps-les op CoddyKit. Dit is les 2 van 4. Je kunt 3 lessen uit dit leerpad gratis volledig lezen — daarna ontgrendelt CoddyKit PRO alle lessen, plus praktische oefeningen met een ingebouwde code-editor en een AI-tutor die 24/7 beschikbaar is. Deze les maakt deel uit van het leertraject Docker en de basis van DevOps. Je voortgang wordt gesynchroniseerd op het web en in de CoddyKit-app. De cursus Docker en de basis van DevOps bevat in totaal 4 lessen.

Compose-bestand: de blauwdruk

Welkom bij het schrijven van Docker Compose-bestanden! Het bestand docker-compose.yml is je blauwdruk voor het definiëren en uitvoeren van Docker-toepassingen met meerdere containers.

Het gebruikt YAML-syntaxis om de services, netwerken en volumes van je toepassing in één bestand te configureren.

Een Compose-bestand schrijven — illustratie 1

YAML: een korte herhaling

Docker Compose-bestanden worden geschreven in YAML (YAML Ain't Markup Language). Dit is een gegevensserialisatiestandaard die gemakkelijk door mensen te lezen is.

  • Sleutel-waardeparen: key: value
  • Lijsten: items beginnen met een koppelteken (- item)
  • Inspringing: essentieel voor het definiëren van structuur en hiërarchie. Gebruik spaties, geen tabs!

De sleutel `version`

Elk bestand docker-compose.yml begint met een sleutel version. Hiermee geef je de versie van de indeling van het Compose-bestand op, zodat Docker Compose weet hoe het je bestand moet interpreteren.

Voor de meeste moderne toepassingen wordt '3.8' of een vergelijkbare '3.x'-versie aanbevolen.

version: '3.8'

`services` definiëren

In de sectie services definieer je de afzonderlijke containers (services) waaruit je toepassing bestaat. Elke service vertegenwoordigt een onderdeel, zoals een webserver of een database.

Onder services vermeld je elke service met een naam die je zelf kiest.

version: '3.8'
services:
  web:
    # Service configuration goes here
  database:
    # Another service's configuration

Service-`image` en `ports`

Binnen een servicedefinitie geeft image aan welke Docker-installatiekopie je wilt gebruiken (bijvoorbeeld nginx:latest). Met de sleutel ports koppel je containerpoorten aan hostpoorten, zodat toegang van buitenaf mogelijk is.

  • Met "80:80" koppel je hostpoort 80 aan containerpoort 80.
version: '3.8'
services:
  web:
    image: nginx:latest
    ports:
      - "80:80"

Service-`volumes`

Met de sleutel volumes binnen een service kun je paden vanaf je hostmachine in de container koppelen of volumes met een naam gebruiken voor opslag van gegevens die behouden moeten blijven.

In dit voorbeeld wordt de lokale map ./app gekoppeld aan /usr/src/app in de container.

version: '3.8'
services:
  app:
    image: my-node-app
    volumes:
      - ./app:/usr/src/app

Variabelen van de service `environment`

Gebruik de sleutel environment om omgevingsvariabelen door te geven aan de containers van je service. Dit is essentieel voor configuratie die per omgeving kan verschillen, zoals verbindingsreeksen voor databases.

Je kunt variabelen opgeven als sleutel-waardeparen of in lijstnotatie.

version: '3.8'
services:
  backend:
    image: my-api
    environment:
      - DATABASE_URL=postgres://user:pass@host:5432/db
      - NODE_ENV=development

`networks` en `volumes` op het hoogste niveau

Naast het definiëren ervan binnen services kun je ook aangepaste benoemde volumes en netwerken op het hoogste niveau van je bestand docker-compose.yml declareren.

Zo krijg je beter georganiseerde en herbruikbare definities voor gegevenspersistentie en communicatie tussen containers.

version: '3.8'
services:
  # ... service definitions ...

networks:
  my_app_network:
    # custom network configuration

volumes:
  db_data:
    # named volume configuration

Alles samenvoegen

Hier is een klein voorbeeld waarin we combineren wat we hebben geleerd. Het definieert een webservice en een databaseservice en gebruikt een image, poorten en een benoemd volume.

Let erop hoe inspringing de structuur bepaalt.

version: '3.8'
services:
  web:
    image: nginx:latest
    ports:
      - "80:80"
    volumes:
      - web_content:/usr/share/nginx/html
  db:
    image: postgres:13
    environment:
      - POSTGRES_DB=mydb
      - POSTGRES_USER=user
      - POSTGRES_PASSWORD=secret

volumes:
  web_content:
  db_data:

Compose-bestand controleren

Welke van de volgende YAML-fragmenten definieert correct een Docker Compose-service met de naam 'api' die de image 'myapi:1.0' gebruikt en containerpoort 3000 beschikbaar maakt op hostpoort 8080?

Samenvatting: de basis van een Compose-bestand

Goed gedaan! Je hebt de basis geleerd van het schrijven van een bestand docker-compose.yml.

  • Het begint met een version.
  • services definieert de onderdelen van je applicatie.
  • Elke service gebruikt een image, kan ports beschikbaar maken, volumes gebruiken voor persistentie en environment-variabelen instellen.
  • Met networks en volumes op het hoogste niveau kun je geavanceerde configuratie instellen.

Het beheersen van deze YAML-structuur is essentieel voor het orkestreren van apps met meerdere containers!

Gratis beginnen

Leer Docker en de basis van DevOps met een AI-tutor — gratis

Schrijf echte code en voer die uit in je browser, krijg direct hulp van een AI-tutor die 24/7 beschikbaar is en ga verder waar je gebleven bent op het web of in de app.

Cursussen
12
Lessen
48

Veelgestelde vragen

Is de les “Een Compose-bestand schrijven” gratis?

Ja — je kunt hier op het web alle 3 lessen van het leerpad Docker en de basis van DevOps, waaronder “Een Compose-bestand schrijven”, gratis volledig lezen. Daarna ontgrendelt CoddyKit PRO alle lessen, plus interactieve oefeningen met een ingebouwde code-editor en een AI-tutor die 24/7 beschikbaar is. De cursus Docker en de basis van DevOps bevat in totaal 4 lessen.

Wat leer ik in “Een Compose-bestand schrijven”?

Leer de YAML-syntaxis voor `docker-compose.yml` om services, netwerken en volumes te definiëren. Je oefent met Docker en de basis van DevOps door code rechtstreeks in de browser uit te voeren. Een AI-begeleider die 24/7 beschikbaar is beantwoordt je vragen terwijl je de les doorwerkt.

Heb ik ervaring nodig om met Docker en de basis van DevOps te beginnen?

Ervaring vooraf is niet nodig. Docker en de basis van DevOps op CoddyKit is opgebouwd voor beginners tot gevorderden, zodat je hier of bij het begin kunt starten en in je eigen tempo kunt leren. Dit is les 2 van 4.

Hoe lang duurt de les “Een Compose-bestand schrijven”?

De meeste lessen van CoddyKit duren ongeveer 5–10 minuten. Elke les is kort en interactief, zodat je gestaag vooruitgaat en op het web en in de app precies verdergaat waar je was gebleven.

Kan ik code schrijven en uitvoeren in deze les over Docker en de basis van DevOps?

Ja. Elke les over Docker en de basis van DevOps bevat een ingebouwde code-editor, zodat je rechtstreeks in je browser echte code kunt schrijven en uitvoeren en direct feedback van AI krijgt — lokale installatie is niet nodig.

Alle lessen in deze cursus

  1. Wat is Docker Compose?
  2. Een Compose-bestand schrijven
  3. Applicaties met meerdere services implementeren
  4. Omgevingsvariabelen en .env-bestanden
← Terug naar Docker en de basis van DevOps