Meer informatie over Dockerfiles
Een Dockerfile is een tekstbestand met instructies om een Docker Image te bouwen. Het definieert de stappen die nodig zijn om je applicatie en de omgeving waarin het draait te creëren.
Je maakt een dockerfile aan in een project door een new file te maken en de naam Dockerfile
te geven aan dit document. Voor een dockerfile is geen extensie nodig (bijv. .html, .css, .js)
Voorbeeld van een eenvoudige Dockerfile
# Gebruik een basis image
FROM node:14
# Stel de werkdirectory in (de map waar docker de bestanden van zal gebruiken)
WORKDIR /app
# Kopieer package.json en installeer dependencies
COPY package*.json ./
RUN npm install
# Kopieer de rest van de applicatie
COPY . .
# Stel het commando in om de app te starten
CMD ["node", "app.js"]
Uitleg van de commando’s
- FROM node:14
FROM node:14
Dit commando specificeert de basis image voor de Docker container. In dit geval is het de officiële Node.js image versie 14. Deze image bevat alles wat nodig is om een Node.js applicatie uit te voeren, inclusief de Node.js runtime en de npm package manager.
- WORKDIR /app
WORKDIR /app
Dit commando stelt de werkdirectory (de map waar docker de bestanden van zal gebruiken) in voor de container. Alle volgende commando’s zullen relatief ten opzichte van deze directory worden uitgevoerd. Als de directory niet bestaat, wordt deze aangemaakt.
- COPY package.json ./*
COPY package*.json ./
Dit commando kopieert de bestanden package.json
en package-lock.json
(indien aanwezig) van je lokale machine naar de werkdirectory (/app
) in de container. Deze bestanden bevatten de lijst van dependencies die je applicatie nodig heeft.
- RUN npm install
RUN npm install
Dit commando installeert de dependencies gedefinieerd in package.json
door gebruik te maken van npm. Het zorgt ervoor dat alle benodigde packages en modules geïnstalleerd worden in de container. Dit commando wordt uitgevoerd tijdens de build-fase van de Docker image.
- COPY . .
COPY . .
Dit commando kopieert alle bestanden en directories uit de huidige directory van je lokale machine naar de werkdirectory (/app
) in de container. Hierdoor wordt je volledige applicatie in de container geplaatst.
- CMD [“node”, “app.js”]
CMD ["node", "app.js"]
Dit commando specificeert het standaard commando dat wordt uitgevoerd wanneer een container van deze image wordt gestart. In dit geval wordt node app.js
uitgevoerd, wat betekent dat de Node.js applicatie (app.js
) wordt gestart. Het gebruik van de JSON-array syntax (["node", "app.js"]
) wordt aanbevolen omdat het correct omgaat met de parameter en zorgt voor een consistente uitvoering.
Basis commando’s
Om een project om te zetten naar een image moeten er commando’s uitgevoerd worden in een terminal.
docker build -t <image-name> .
- Bouw een Docker image met een naam naar keuze.- Als je geen naam meegeeft, zal docker zelf er een naam aan koppelen
docker run <image>
- Start een container van een image..
Volgende stap: 4. Docker Images