Initial commit

This commit is contained in:
Francesco Lorenzo D'Amico
2026-08-10 15:18:25 +02:00
parent 8fdb425402
commit a5d116358e
15 changed files with 700 additions and 165 deletions
+17
View File
@@ -1,15 +1,32 @@
# Docker lädt ein fertiges Image mit Linux Alpine und Node.js Version 20.
# Alpine ist eine sehr kleine Linux-Distribution — kleineres Image, schnellere Downloads.
FROM node:20-alpine
# Docker erstellt Verzeichnis /app falls noch nicht vorhanden.
# Alle folgenden Befehle laufen in diesem Verzeichnis.
WORKDIR /app
# Zuerst nur package.json kopieren — noch nicht den ganzen Code.
# Warum: Docker cached jeden Schritt. Wenn sich nur der Code ändert aber nicht die
# Dependencies, muss npm ci nicht nochmal laufen — Build wird schneller (Layer Caching).
COPY package*.json ./
# npm ci installiert exakt die Versionen aus package-lock.json — reproduzierbarer Build.
# --omit=dev: Keine Entwicklungs-Dependencies in Produktion — kleineres und sichereres Image.
RUN npm ci --omit=dev
# Jetzt erst den restlichen Code kopieren — nach npm ci damit der Cache optimal genutzt wird.
COPY . .
# NODE_ENV=production aktiviert Optimierungen in Express (z.B. bessere Performance, weniger Logs).
# PORT=4000 definiert auf welchem Port der Server lauscht.
ENV NODE_ENV=production
ENV PORT=4000
# Dokumentiert welchen Port der Container verwendet — öffnet ihn aber nicht wirklich.
# Das passiert in docker-compose.yml.
EXPOSE 4000
# Startbefehl wenn der Container läuft.
# Array-Form statt String damit Node.js direkt als Prozess gestartet wird — kein Shell-Prozess dazwischen.
CMD ["node", "index.js"]