Introduktion till Docker

Målet med övningen

Denna övning syftar till att öva på att containerisera en applikation med Docker och använda denna container i applikationens utveckling.

Innan du börjar övningen

Denna övning är avsedd att användas parallellt med teoridelen i denna modul. Börja med att titta på inspelningarna och pausa när du kommer till Steg #4.

Du kan sedan följa med och koda tillsammans med oss. Vi använder Neo4j och Python i inspelningarna, men du bör kunna översätta detta till MongoDB och Node.js (eller någon annan miljö du väljer) relativt enkelt.

Set till att du har Docker Desktop installerat på din dator.

1. Applikationen

Vi kommer att använda oss av en väldigt enkel applikation för att prova på att använda Docker.

Börja med att skapa ett tomt repository hello-express i GitLab under https://gitlab.lnu.se/1dv613/student/<ditt användanamn>/projects

Notes

  • Säkerställ att du har de nödvändiga rättigheterna för att klona båda arkiven och köra kommandot git pull.
  • Var försiktig när du arbetar med orelaterade versionshistoriker; granska ändringarna för att säkerställa att allt har slagits ihop korrekt.

2. Docker

Följ instruktionerna i Introduktion till containers (Steps #1-#4).

Dockerfile exempel

I en Dockerfil med flera steg installeras applikationens beroenden i ett bassteg separat från koden för att optimera caching och bygghastighet. I det sista steget skapas en lättviktig körmiljö genom att endast nödvändiga filer kopieras, vilket minskar bildens storlek och förbättrar säkerheten.

.dockerignore

Istället för att kopiera alla filer till containern, använd en .dockerignore-fil för att välja vilka filer du vill kopiera. Denna process kallas för "allowlisting".

Example:

Testa din Docker container

Om allt har gott som det skall så ska du kunna besöka url:en http://localhost:3000 i din browser och se utskriften ifrån applikationen.

Nästa steg

Att manuellt sätta upp nätverk, bygga containrar och köra dem kan vara komplicerat, särskilt när du har flera tjänster och beroenden. För att hantera denna komplexitet kommer nästa steg att introducera ett verktyg som heter Docker Compose, mer om det under vecka 5.