# ============================================================================== # Void-Genesis - Lobby Backend (Dev Environment) # ============================================================================== # Wir nutzen eine leichtgewichtige Alpine-Version der aktuellen Node.js LTS (z.B. 22) # Alpine-Images sind extrem klein und reduzieren die Angriffsfläche. FROM node:22-alpine # Setze das Arbeitsverzeichnis innerhalb des Containers auf /app. # Alle folgenden Befehle (RUN, CMD, COPY) werden in diesem Ordner ausgeführt. WORKDIR /app # Wir kopieren zuerst NUR die package.json (und package-lock.json, falls vorhanden). # Das ist ein Best-Practice für Docker: Docker speichert diesen Schritt im Cache. # 'npm install' wird beim erneuten Bauen nur dann ausgeführt, wenn sich an den # Abhängigkeiten in der package.json etwas geändert hat. Das spart enorm Zeit! COPY package*.json ./ # Installiere alle Abhängigkeiten (inklusive Dev-Dependencies wie nodemon) RUN npm install # HINWEIS: Den restlichen Quellcode (src/) kopieren wir hier im Dev-Dockerfile # absichtlich nicht mit COPY. Der Code wird stattdessen über die docker-compose.yml # als Volume gemountet. So greifen deine Änderungen am Root-Server sofort im Container. # Wir dokumentieren hier, dass der Container auf Port 3000 lauscht. # Das Backend wird diesen Port später nutzen. EXPOSE 3000 # Der Standardbefehl, wenn der Container startet. Wir rufen das Script "dev" auf, # welches wir gleich im nächsten Schritt in der package.json definieren werden. CMD ["npm", "run", "dev"]