Opdracht IT Landscape - CRAZYFIZZz/IT-Landscape GitHub Wiki
Deze wiki is gemaakt met liefde door Joaquin Smits :).
Hier ga ik verschillende opdrachten documenteren wat ik heb geleerd tijdens de lessen.
- HOOFDSTUK 3 DOCKER Ik kan het beste beginnen met het uitleggen wat Docker nu precies is. -Docker is een software die gemaakt is voor systeembeheerders en ontwikkelaars. Hier kunnen developers eenvoudig applicaties bouwen, verpakken, verzenden en uitvoeren als lichtgewicht, draagbare, onafhankelijke containers, die vrijwel overal kunnen worden uitgevoerd. Voor dat Docker er was gebruikten bedrijven vaak virtuele machines om applicaties in een afgesloten omgevingen te draaien, maar omdat deze VM's vaak ook een heel besturingssysteem hadden waren ze vaak traag wat niet heel fijn is. Docker gebruikt het host-besturingssysteem en draait alleen de applicatie in een container, wat lichter en sneller is. Waarom traag als het ook snel kan (zolang het wel goed is). Netflix, Uber en Spotify gebruiken Docker om hun gebruikers te bedienen met containers en databanken.
De vraag is nu hoe installeer je Docker desktop nou dat kan volgens deze link:Docker Desktop Dan zou je normaal gezien dit scherm moeten zien:
Als eerste druk je op de installeer Docker Desktop knop, en niet de beta versie.
Oke Prima! Dan zou je nu normaal gezien een plaats kunnen kiezen waar je de docker installer exe wilt plaatsen en zo niet dan zou de exe file waarschijnlijk bij downloads staan. Wanneer dit helemaal is geinstalleerd dubbbel klik je op de exe file en dan zou er een scherm moeten opkomen dit kan of te wel updating zijn of unpacking the files:
Dit kan even duuren maar dat is normaal.
Wanneer je dit krijgt mag je gewoon op close drukken.:
Vervolgens mag je Docker Dekstop runnen en dan zal je op de beginpagina terecht komen. Je zal zoeist als dit bijvoorbeeld zien:
Nu zal je op sign in moeten drukken om in te loggen!
Nu dat dit allemaal gedaan is wordt het tijd voor de eerste basiccommando's. Dit doen we in de cmd promp van je computer zelf dit doen we niet in de terminal van Docker Desktop zelf.
Ik laat hier al paar basiscommandos zien.
Ik zal ten eerste laten zien hoe je een image moet maken:
Met een Docker-image stop je je hele app, inclusief alles wat die nodig heeft in 1 image. Daardoor draait die overal hetzelfde, of dat nou op je laptop is of in de cloud. Handig om te delen en snel te starten, en je voorkomt gezeur zoals "Maar bij mij werkt die wel?".
We hebben hiervoor ook een repository nodig. Ik heb nu als voorbeeld op "Docker" Opgezocht op github en daar zie je meerdere repository's. ik gebruik nu als voorbeeld de respository van https://github.com/docker/welcome-to-docker . Hier gebruik je vervolgens de git clone van zoals hieronder in de afbeelding.:
Als u dit ziet dan weet u zeker dan ge de commando juist hebt uitgevoerd.
Je kan via de "cd" commando ook altijdd wisselen van directory. Ik zal mijn terminal laten zien als refrence:
Dit is ook een commando wat je buiten het gebruik van docker kan gebruiken "cd" betekent gewoon "Change_Directory".
Als je de versie van je docker wilt zien dan gebruik je simpel weg de docker --version commando:
Dan weet je altijd zeker dat je de juiste versie gebruikt of de nieuwste versie van docker gebruikt.
Er zijn nog veel meer commandos in Docker maar de laatste essentiele commando is de docker build commando.
Ik zal nu uitleggen wat precies een docker file is. Een Docker file is eigenlijk gewoon een tekstbestand wat in staat wat er in een image moet gebeuren, hierdoor bestaat een docker image. ik laat zien hoe dit moet via het gebruik van visual studio code. zorg er zeker voor dat je een nieuwe file aanmaakt genaamd "dockerfile"
Ik leg hierbij ook uit wat elke regel betekent.
hier ziet u de regels wat ik in de docker file heb gezet
FROM node:18-alpine Je begint met een kant-en-klare Node.js-omgeving. Deze is lekker licht dankzij Alpine Linux.
WORKDIR /app Zet de "werkmap" in de container. Alles wat je hierna doet, gebeurt in deze map.
COPY . . Kopieert al je projectbestanden (dus ook je code) naar de container.
RUN npm install Installeert alle dependencies van je project. Net zoals je lokaal npm install zou doen.
EXPOSE 2025 Geeft aan dat je app draait op poort 2025. Handig voor als je die poort open wilt zetten bij het runnen.
CMD ["npm", "start"] Zegt tegen Docker: “Als de container start, voer dan dit commando uit om m’n app te starten.”
Wat is docker compose en waarvoor wordt het nu gebruikt. Docker Compose is een tool waarmee je makkelijk meerdere containers tegelijk kunt opstarten, zoals een app + database. Je zet alles in een docker-compose.yml bestand en start het met één commando. Super handig als je project uit meerdere onderdelen bestaat.
version: '3.8' Geeft aan dat je Docker Compose versie 3.8 gebruikt. Dit bepaalt hoe het bestand geïnterpreteerd wordt.
services: Hier geef je aan welke onderdelen (containers) je app nodig heeft. In jouw geval: frontend en mongo.
frontend Je frontend-app, bijvoorbeeld gebouwd met React, Vite of een andere JS-framework.
build: ./frontend Docker zoekt in de map ./frontend naar een Dockerfile om een image te bouwen.
container_name: Joaquin-frontend Geeft de container een herkenbare naam in plaats van een automatisch gegenereerde.
ports: - "5173:5173" Verbindt poort 5173 van de container met poort 5173 van je eigen computer. Je kunt dus je app openen via http://localhost:5173.
command: ["npm", "start"] Wanneer de container start, voert hij npm start uit om de app te draaien.
mongo Je database, in dit geval MongoDB.
image: mongo Haalt de officiële MongoDB-container van Docker Hub.
container_name: Joaquin-mongo Ook hier geef je de container een herkenbare naam.
ports: - "27017:27017" Verbindt de standaard poort van MongoDB met je computer, zodat je er bijvoorbeeld met Mongo Compass op kunt inloggen.
volumes: - mongo-data:/data/db Slaat de databasebestanden op in een volume (mongo-data), zodat je data blijft bestaan als de container stopt.
volumes: mongo-data: Hiermee maak je een named volume aan dat Docker gebruikt om data op te slaan buiten de container zelf. Zo blijft je database-inhoud behouden, ook als je de container verwijdert.