{"id":2588,"date":"2024-09-20T08:00:00","date_gmt":"2024-09-20T06:00:00","guid":{"rendered":"https:\/\/aptex.de\/?p=2588"},"modified":"2025-01-17T10:51:38","modified_gmt":"2025-01-17T09:51:38","slug":"angular-docker-container","status":"publish","type":"post","link":"https:\/\/aptex.de\/blog\/angular-docker-container\/","title":{"rendered":"Angular Docker Container: Deployment leicht gemacht"},"content":{"rendered":"\n

Du entwickelst mit Angular und fragst dich, wie du deine App am besten deployen kannst? Docker k\u00f6nnte die L\u00f6sung sein, die du suchst. In diesem Artikel erkl\u00e4ren wir, wie du Docker f\u00fcr deine Angular-Anwendungen nutzt und welche Vorteile das bringt. Wir zeigen dir, wie du ganz leicht deinen ersten Angular Docker Container erstellst und dazu gibt’s zwei praktische Beispiele f\u00fcr Dockerfiles, die du direkt einsetzen kannst.<\/p>\n\n\n\n

Docker und Angular: Ein starkes Team<\/h2>\n\n\n\n

Stell dir vor, du k\u00f6nntest deine gesamte Entwicklungsumgebung in ein handliches Paket schn\u00fcren \u2013 inklusive aller Abh\u00e4ngigkeiten und Einstellungen. Genau das macht Docker m\u00f6glich. Es ist wie ein virtueller Server f\u00fcr deine App, der alles enth\u00e4lt, was sie zum Laufen braucht. Aber was genau ist Docker eigentlich?<\/p>\n\n\n\n

\"\"<\/figure>\n\n\n\n

Docker ist eine Open-Source-Plattform, die es dir erm\u00f6glicht, Anwendungen in isolierten Umgebungen \u2013 sogenannten Containern \u2013 zu entwickeln, zu verpacken und auszuf\u00fchren. Diese Container sind leichtgewichtig, portabel und enthalten alles, was deine Anwendung ben\u00f6tigt: von der Codebasis \u00fcber die Laufzeitumgebung bis hin zu Systemwerkzeugen und Bibliotheken.<\/p>\n\n\n\n

Warum Docker f\u00fcr Angular-Projekte?<\/h3>\n\n\n\n

Warum solltest du Docker f\u00fcr deine Angular-Projekte in Betracht ziehen? Hier sind einige \u00fcberzeugende Gr\u00fcnde:<\/p>\n\n\n\n

    \n
  1. Konsistente Entwicklungsumgebung<\/strong>: Mit Docker stellst du sicher, dass deine App in jeder Umgebung identisch l\u00e4uft \u2013 sei es auf deinem Entwicklungsrechner, dem Testserver oder in der Produktionsumgebung. Keine b\u00f6sen \u00dcberraschungen mehr wegen unterschiedlicher Systemkonfigurationen!<\/li>\n\n\n\n
  2. Einfaches Deployment<\/strong>: Du sparst dir den \u00c4rger mit komplexen Deployment-Prozessen. Mit Docker packst du deine gesamte Anwendung in einen Container und deployest sie mit wenigen Befehlen.<\/li>\n\n\n\n
  3. Verbesserte Skalierbarkeit<\/strong>: Docker-Container lassen sich leicht replizieren und verteilen. Das macht es einfach, deine Angular-App bei steigendem Traffic zu skalieren.<\/li>\n\n\n\n
  4. Isolierte Ausf\u00fchrung<\/strong>: Jeder Container l\u00e4uft isoliert, was die Sicherheit erh\u00f6ht und potenzielle Konflikte zwischen Anwendungen minimiert.<\/li>\n\n\n\n
  5. Ressourceneffizienz<\/strong>: Im Vergleich zu virtuellen Maschinen sind Docker-Container deutlich ressourcenschonender, da sie sich die Verf\u00fcgbaren Resourcen des Hosts effizient teilen.<\/li>\n\n\n\n
  6. Schnellere Entwicklungszyklen<\/strong>: Docker erm\u00f6glicht es dir, schnell zwischen verschiedenen Versionen deiner App zu wechseln und neue Features in isolierten Umgebungen zu testen. Dies erm\u00f6glicht auch schnelle und unkomplizierte Rollbacks, sollte mal etwas schief gehen.<\/li>\n\n\n\n
  7. Continuous Integration und Delivery<\/strong>: Docker integriert sich nahtlos in CI\/CD-Pipelines, was automatisierte Tests und Deployments erleichtert.<\/li>\n<\/ol>\n\n\n\n

    Dein erster Angular Docker Container: Schlank und schnell<\/h2>\n\n\n\n

    Genug der Theorie, lass uns praktisch werden. Hier ist eine Dockerfile, die deine Angular-App f\u00fcr die Produktion fit macht:<\/p>\n\n\n\n

    # Build-Stage \/ Verwende Node.js als Basis-Image\nFROM node:alpine as build\n# Setze das Arbeitsverzeichnis\nWORKDIR \/app\n# Kopiere package.json und package-lock.json\nCOPY package*.json .\/\n# Installiere Abh\u00e4ngigkeiten\nRUN npm ci\n# Kopiere den restlichen Quellcode\nCOPY . .\n# Baue die Angular-App\nRUN npm run build\n\n# Production-Stage \/ Verwende NGINX als Basis-Image f\u00fcr die Produktionsumgebung\nFROM nginx:alpine\n# Kopiere die gebaute App in das NGINX-Verzeichnis\nCOPY --from=build \/app\/dist\/meine-angular-app \/usr\/share\/nginx\/html\n# Kopiere deine angepasste NGINX-Konfiguration (optional, aber empfohlen. Eine Beispiel Konfiguration findest du weiter unten)\nCOPY nginx.conf \/etc\/nginx\/nginx.conf\n# Port 80 freigeben, nginx l\u00e4uft auf diesem Port\nEXPOSE 80\nCMD [\"nginx\", \"-g\", \"daemon off;\"]<\/code><\/pre>\n\n\n\n

    Dockerfile auf GitHub ansehen<\/a><\/p>\n\n\n\n

    Und so schnell hast du deine erste Angular Dockerfile geschrieben! Aber was passiert hier? Zuerst bauen wir die App in einer Node.js-Umgebung. Dann packen wir das Ergebnis in ein schlankes NGINX-Image, das als Webserver dient. So bekommst du eine optimierte Produktionsumgebung f\u00fcr deine Angular-Anwendung. <\/p>\n\n\n\n

    Die zwei Stufen erkl\u00e4rt: Build und Produktion<\/h3>\n\n\n\n

    Du hast vielleicht bemerkt, dass diese Dockerfile in zwei Stufen aufgeteilt ist. Diesen Ansatz nennt man „Multi-Stage Build“. Aber warum machen wir das?<\/p>\n\n\n\n

      \n
    1. Build-Stage<\/strong>:<\/li>\n<\/ol>\n\n\n\n