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 cianvänds istället förnpm installför att säkerställa reproducerbara builds.USER nodekö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.