32 lines
1.5 KiB
Docker
32 lines
1.5 KiB
Docker
# ==============================================================================
|
|
# 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"] |