WebOntwikkeling 2024
DigitAP
  • Introductie
  • Tooling
    • Devcontainers
    • Git
    • Terminal en bash
  • NodeJS + TypeScript
    • Wat is NodeJS?
    • Waarom TypeScript?
    • Nieuw project
    • Input lezen
    • Type Systeem
      • Basic types
      • Arrays
      • Interfaces
      • Functions
    • Exceptions
    • Modules
    • Asynchroon Programmeren
      • Promises
      • Async/Await
      • Fetch
      • Extra voorbeelden
  • Express.js
    • Wat is een backend framework?
    • Basis
    • Nodemon
    • Statische Bestanden
    • EJS
    • Request
      • GET Request
      • POST Request
      • Multi-part form data
    • Response
    • Router
    • Middleware
    • Deployment
  • MongoDB
    • Wat is MongoDB?
    • MongoDB driver
    • Insert
    • Find
    • Limit & Sort
    • Query Operators
    • Update
    • Delete
    • Text Search
    • Gebruik in Express.js
      • CRUD
  • Security & Testing
    • Environment Variables
    • Cookies
    • Hashing & Encryptie
    • Sessions
      • Session Based Login
    • JWT Tokens
      • JWT NPM package
      • Tokens veilig opslaan
      • Token Based Login
    • Testing
  • Labos
    • 1. Tooling
    • 2. Basis
      • Hello Name
      • BMI Calculator
      • BMI Calculator Multi
      • Interest Calculator
      • Uren en Minuten
      • Wisselgeld
      • Name from Email
      • Text Box
    • 3. Arrays
      • Som van getallen
      • Puntenboek
      • Rot13
      • Pokemon Team
      • Todo List String
      • Tick Tac Toe
    • 4. Interfaces & functies
      • Interfaces
        • Recepten
        • Movies Objects
        • Todo List Objects
      • Functies
        • Math Fun
        • Short Notation
        • Array Sum
        • Movies Functions
        • Filter Numbers
        • At Least Two
    • 5. Async & fetch
      • Fake Fetch
      • Promise All
      • Slow Sum
      • Todo List Fetch
      • Cocktails Promise All
      • Bitcoin API
      • Joke API
      • School API
      • Cocktails API
      • Unix Timestamp API
    • 6. Modules en NPM Packages
      • Math Module
      • Export Interfaces
      • Cowsay Module
      • Cat GPT
      • Rainbow Chalk
    • 7. Express
      • Hello Express
      • DadJoke Express
      • Bitcoin current
    • 8. EJS + Static
      • Hello Express EJS
      • Cat Static
      • Maaltafels
      • Newspaper
    • 9. Get Request
      • Hello Query
      • Math Service
      • Newspaper Route
      • Newspaper Search
      • Steam
    • 10. Post Request
      • Pet Shelter
      • Redirect Form
      • Contact Form
    • 11. Router en Middleware
      • Router Combi
      • Utility Middleware
      • Rate Limiter
    • 12. Herhaling
      • Twitter
      • Word Guess
    • 13. Mongo Basics
      • Guestbook
      • MoviesDB
      • Pokemon Team
    • 14. Mongo Queries
      • Pet Shelter
      • Games DB
    • 15. Mongo + Express
      • Pet Shelter Express
      • Guestbook Express
      • Pokemon Team Express
    • 16. CRUD
      • Users CRUD
      • Pokedex
    • 17. Session & Cookies
      • Shopping Cookie
      • View Counter Cookies
      • View Counter Sessions
    • 18. Session based login
      • Login Express
      • Pokedex Express Sessions
    • 19. Token based login
      • JWT Sign
      • Login Express JWT
    • 20. Testing
      • Math Test
      • String Test
      • Math Express Test
      • Form Express Test
      • Pet Shelter Express Test
    • 21. Herhaling
      • Youtube Favorites
      • Beerster
    • Extra oefeningen
      • DNA Match
      • View Counter
      • Hogwarts Express CRUD
  • Project
    • Voorbereiding (devcontainer + github)
    • Semester 2
      • Milestone 1 - Terminal App
      • Milestone 2 - Express
      • Milestone 3 - MongoDB
      • Milestone 4 - Security
Powered by GitBook
On this page
  • Dev Environment
  • Dev Environment Problemen
  • Docker to the Rescue!
  • Wat Heb je Nodig?
  • Devcontainers (1st time setup)
  • Installation
  • Starting a DevContainer from a Github Repo
  • Trouble Shooting
Export as PDF
  1. Tooling

Devcontainers

PreviousIntroductieNextGit

Last updated 3 months ago

In het filmpje wordt er gebruik gemaakt van wsl --install om wsl te installeren. Gebruik in de plaats wsl --install --no-distribution want anders zal deze ook Ubuntu installeren.

Dev Environment

Een Dev Environment is simpelweg een systeem waar alle software, tools en hardware op geïnstalleerd zijn, zodat jij kunt programmeren aan een specifiek project. Met software en tools wordt echt alles bedoeld dat je gebruikt tijdens het programmeren:

  • Code Editors (bv. VS Code of Visual Studio)

  • Plugins (bv. een Markdown extension in VS Code)

  • Compilers (bv. de .NET compiler voor C#)

  • Sandbox omgevingen (bv. NodeJS)

  • ...

Meestal heb je op één toestel meerdere Dev Environments geïnstalleerd. Het is nu eenmaal niet praktisch om rond te lopen met 5 laptops...

Dev Environment Problemen

Een Dev Environment is dus vaak een complex systeem van allerlei software, tools en specifieke instellingen die samenwerken om een stuk software te ontwikkelen. Wat kan er allemaal misgaan?

Oh Nee, mijn Laptop is Kapot!

Je laptop gaat stuk, en je koopt een nieuwe. Nu moet je ALLE software en tools opnieuw installeren. Niet alleen dat, maar je zult er ook op moeten letten dat je EXACT dezelfde versie van die software en tools terug installeert! Weet jij nog of je versie 18.17.1 of versie 17.9.2 had geïnstalleerd op je laptop?

Oh Nee, een Groepswerk!

Je moet samenwerken met iemand anders. Het project werkt perfect op jouw Dev Environment, maar wilt om één of andere reden niet draaien op die van je teamgenoot. Tijd om ELKE tool en software die je gebruikt na te kijken op versie nummer!

Oh Nee, een Oud Project Werkt Niet Meer!

Voor je nieuwste projecten heb je NodeJS geupdate naar de nieuwste versie. Oeps! Nu werken je oude projecten, die gebruik maakten van een oude versie van NodeJS, niet meer!

Deployment Hell

Alles werkt perfect op jouw systeem, en ook op die van je teamgenoten. Maar tijdens het deployen naar de server, merk je dat je software niet werkt. Tijd om ELKE tool en software die je gebruikt (opnieuw) na te kijken op versie nummer!

Docker to the Rescue!

We kunnen een Docker Container zo samenstellen dat alle tools en instellingen daarin geïnstalleerd staan. Je installeert niets meer op je eigen systeem, alles zit netjes verpakt in een Docker Container! Zo'n Docker Container waarin je je Dev Environment opslaat voor één specifiek project, dàt heet een DevContainer.

Wat Heb je Nodig?

Je hebt in feite slechts 3 programma's nodig op je computer:

  • Git

  • Docker Desktop*

  • Visual Studio Code

*Om Docker te laten werken moet je WSL geïnstalleerd hebben op je Windows computer. Dus in principe moet je 3 dingen installeren.

Devcontainers (1st time setup)

Installation

install WSL

Open Powershell als administrator.

Gebruik het volgende commando om na te kijken of je WSL hebt geinstalleerd, en zo ja, welke versie.

wsl --version

Als WSL geinstalleerd is, zou je output moeten krijgen zoals deze (versie nummers kunnen verschillen).

WSL version: 2.0.14.0
Kernel version: 5.15.133.1-1
WSLg version: 1.0.59
MSRDC version: 1.2.4677
Direct3D version: 1.611.1-81528511
DXCore version: 10.0.25131.1002-220531-1700.rs-onecore-base2-hyp
Windows version: 10.0.22621.3007

Indien WSL dus geinstalleerd is, kan je WSL updaten met het volgende command:

wsl --update

Als je WSL NIET geinstalleerd hebt, dan installeer je WSL met het volgende commando:

wsl --install

Install Docker Desktop

Download het installie-programma en voer het programma uit.

Install Git

Download het installie-programma en voer het programma uit.

Install Visual Studio Code

Download het installie-programma en voer het programma uit.

Install the VS Code Extensions

Open Visual Studio Code.

Open de Extensions tab vanuit de Sidebar.

Dit installeert 4 extensies in VS Code die je helpen met ontwikkeling in DevContainers.

Authenticatie met Github

Klik in Visual Studio Code in de linkeronderhoek op het "avatar" icoontje.

Kies vervolgens " Sign in to GitHub to use GitHub Pull Requests". Vervolgens zou er een browser venster moeten openen die je vraagt om te authenticeren via Github. Doe dit met je Github AP account.

Pro Tip: in hetzelfde menu vind je ook "Sign in to sync settings" terug. Indien je dit doet worden alle Visual Studio Code instellingen gesynchroniseerd met GitHub. Als je dus ooit Visual Studio Code installeert op een andere computer zal deze automatisch dezelfde instellingen krijgen.

Starting a DevContainer from a Github Repo

Maak een nieuwe Github Repo (tijdens onze lessen gebruik je de Github url op Digitap) of gebruik een bestaande Github Repo.

Als je Github Repo reeds een Devcontainer gebruikte (meestal een devcontainer.json bestand in een mapje genaamd .devcontainer), zal de devcontainer nu gestart worden. De eerste keer zal een tijdje duren, want Docker moet alle nodige bestanden downloaden.

Als je Github Repo nog geen Devcontainer gebruikte, zal VS Code je een aantal vragen stellen:

Wanneer je alle vragen hebt beantwoord, wordt het devcontainer.json bestand aangemaakt en wordt de devcontainer opgestart.

Trouble Shooting

WSL versie is niet up-to-date

Als je de DevContainer probeert te openen, maar je krijgt een foutmelding dat je WSL versie niet up-to-date is, dan moet je WSL updaten. Dit kan je doen door het volgende stappenplan te volgen:

  • Open Powershell als administrator (rechtermuisknop op het Powershell icoontje, en kies voor Run as Administrator)

  • Voer de volgende commando's uit:

dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
wsl --set-default-version 2
wsl --update
  • Hierna kan je best je computer herstarten om zeker te zijn dat alles goed werkt.

Meer informatie vind je op:

Ga naar

Ga naar

Ga naar

Zoek naar het "Remote Development" extension pack van Microsoft.

Tenslotte installeer je nog de "Github Pull Request" extention:

https://learn.microsoft.com/en-us/windows/wsl/install
https://www.docker.com/products/docker-desktop/
https://git-scm.com/downloads
https://code.visualstudio.com/
https://marketplace.visualstudio.com/items?itemName=ms-vscode-remote.vscode-remote-extensionpack
https://marketplace.visualstudio.com/items?itemName=GitHub.vscode-pull-request-github
De positie van het Accounts menu