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.

Se 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ändarnamn>/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 filen Dockerfile med flera steg installeras applikationens beroenden i ett separat steg för att optimera cache och bygghastighet. I runtime-stadiet skapas en lättviktig miljö genom att endast nödvändiga filer kopieras.

.dockerignore

Använd en .dockerignore-fil för att exkludera filer från Docker build context. Detta minskar build-storlek och förbättrar prestanda.

Detta är inte en ren "allowlist", utan en exclusion-lista där man kan simulera allowlisting genom * + !.

Exempel:

Viktiga noteringar

  • npm ci används istället för npm install för att säkerställa reproducerbara builds.
  • USER node kör applikationen som en icke-root användare för ökad säkerhet.
  • Multi-stage build används för att separera dependencies från runtime och minska image-storlek.

Testa din Docker container

Om allt har gått som det ska så ska du kunna besöka URL:en http://localhost:3000 i din browser och se utskriften frå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 Docker Compose i vecka 5.