Node.js-Anwendungen in Docker-Container verpacken

Verpackt man ein fertiges Node.js-Projekt in einen Docker-Container, können es andere leicht auf ihrem System ausführen. Es gibt aber auch weitere Vorteile.

Artikel verschenken
In Pocket speichern vorlesen Druckansicht
Node.js-Anwendungen in Docker-Container verpacken
Lesezeit: 9 Min.
Von
  • Jan Mahn
Inhaltsverzeichnis

Eine Webanwendung in ein Docker-Image zu verpacken ist eine gute Idee – spätestens dann, wenn man sie anderen Entwicklern oder Nutzern bereitstellen möchte. Damit Docker ein solches Container-Image bauen kann, braucht es eine Bauanleitung, das Dockerfile. Das beginnt immer mit der Anweisung FROM, die ein Basis-Image festlegt. Auf diesem basiert dann später der Container.

Doch meistens sind viele Komponenten, die beim Bau eines Containers benötigt werden, für den Betrieb nicht mehr sinnvoll. Sie blähen das Image unnötig auf oder schaffen sogar Angriffspotenzial. Um Images auf das Nötigste zu reduzieren, hat Docker "Multistage Builds" eingeführt. Die erste Stufe kompiliert beispielsweise eine Software und übergibt das Kompilat an die nächste Stufe, die es dann ausführt. Nach getaner Arbeit wirft Docker die erste Stufe weg.

Als Beispiel dient eine statische Webseite, die ein auf JavaScript basierender Markdown-Konverter aus Vorlagen zusammengestellt hat. Für den Betrieb der Seite ist der gesamte Node.js-Unterbau nicht mehr nötig und wird durch einen Nginx-Webserver ersetzt. Eine gute Gelegenheit, den Ballast abzuwerfen und ein Multistage-Image zu bauen. Das gesamte Projekt inklusive des fertigen Dockerfiles finden Sie auf GitHub zum Download.