{"id":12728,"date":"2026-06-17T17:27:30","date_gmt":"2026-06-17T10:27:30","guid":{"rendered":"\/de\/tutorials\/?p=12728"},"modified":"2026-06-17T17:27:32","modified_gmt":"2026-06-17T10:27:32","slug":"node-js-mit-docker-verwenden","status":"publish","type":"post","link":"\/de\/tutorials\/node-js-mit-docker-verwenden\/","title":{"rendered":"Node.js mit Docker verwenden: Schritt-f\u00fcr-Schritt-Anleitung"},"content":{"rendered":"<p class=\"wp-block-paragraph\">Mit Node.js und Docker k&ouml;nnen Sie <strong>schnelle, skalierbare Anwendungen erstellen und sie in sicheren, ressourcenschonenden Containern bereitstellen<\/strong>.<\/p><p class=\"wp-block-paragraph\">Diese Kombination bietet erhebliche Vorteile, darunter Portabilit&auml;t &ndash; sodass Ihre App &uuml;berall auf dieselbe Weise ausgef&uuml;hrt wird &ndash; sowie Konsistenz zwischen Entwicklungs- und Produktionsumgebungen.<\/p><p class=\"wp-block-paragraph\">Wenn Sie Ihre App containerisieren, nutzen Sie Ressourcen effizienter und vereinfachen gleichzeitig den Bereitstellungsprozess.<\/p><p class=\"wp-block-paragraph\">Im Folgenden zeigen wir Ihnen Schritt f&uuml;r Schritt, wie Sie eine Node.js-Anwendung von Grund auf in Docker einrichten. Sie erfahren au&szlig;erdem, wie Sie ein bestehendes Projekt containerisieren, Ihre containerisierte Anwendung testen und Best Practices f&uuml;r ein produktionsreifes Setup anwenden.<\/p><h2 class=\"wp-block-heading\" id=\"h-prerequisites-for-using-node-js-with-docker\">Voraussetzungen f&uuml;r die Verwendung von Node.js mit Docker<\/h2><p class=\"wp-block-paragraph\">Bevor Sie beginnen, stellen Sie sicher, dass die folgenden Voraussetzungen erf&uuml;llt sind:<\/p><ul class=\"wp-block-list\">\n<li><strong>Virtueller privater Server (VPS)<\/strong>. Sie k&ouml;nnen dieser Anleitung zwar auf Ihrem eigenen Rechner folgen, f&uuml;r den Produktivbetrieb Ihrer App ben&ouml;tigen Sie jedoch einen VPS. Der <a href=\"\/de\/vps\">KVM-2-Tarif von Hostinger<\/a> ist ein hervorragender Einstieg f&uuml;r kleine bis mittelgro&szlig;e Projekte und bietet 2 vCPU-Kerne, <strong>8 GB RAM<\/strong> und <strong>100 GB NVMe<\/strong>-Speicher f&uuml;r <strong>7.79 \u20ac\/Monat<\/strong>.<\/li>\n\n\n\n<li><strong>Docker wird auf Ihrem System ausgef&uuml;hrt<\/strong>. Hostinger-Kunden k&ouml;nnen <a href=\"\/de\/tutorials\/docker-auf-ubuntu-installieren\/\">Docker mit nur wenigen Klicks auf ihrem VPS installieren<\/a>, indem sie unsere vorkonfigurierte Vorlage verwenden.<\/li>\n\n\n\n<li><strong>Node.js ist installiert und konfiguriert.<\/strong> Falls Sie dies noch nicht getan haben, folgen Sie unserer Anleitung zur Installation von Node.js und NPM auf Ihrem Ubuntu-Server.<\/li>\n\n\n\n<li><strong>Grundlegende Kenntnisse von Docker-Befehlen.<\/strong> Vertrautheit mit Befehlen wie <strong>docker build<\/strong> und <strong>docker run<\/strong> ist hilfreich, da Sie diese im Terminal h&auml;ufig ausf&uuml;hren werden.<\/li>\n<\/ul><p>\n\n\n        <div class=\"protip\">\n            <div class=\"protip__heading\">\n                <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\">\n                    <path d=\"M1.49234 23.5024C1.23229 23.5024 0.972242 23.4024 0.782206 23.2123C0.562165 22.9923 0.452144 22.6822 0.502153 22.3722C0.562165 21.9221 1.14227 17.9113 3.00262 16.351C3.63274 15.8209 4.43289 15.5509 5.26305 15.5609C6.09321 15.5909 6.87335 15.9109 7.47347 16.4911C8.6937 17.6913 8.76371 19.6717 7.6435 20.9919C6.0832 22.8523 2.08245 23.4324 1.63237 23.4924C1.59236 23.4924 1.54235 23.4924 1.50234 23.4924L1.49234 23.5024ZM5.16303 17.5613C4.84297 17.5613 4.53291 17.6713 4.29287 17.8813C3.60274 18.4614 3.07264 19.9317 2.75258 21.242C4.06282 20.9219 5.5331 20.3918 6.11321 19.7017C6.55329 19.1716 6.54329 18.3814 6.0832 17.9213C5.85316 17.7013 5.5431 17.5713 5.20304 17.5613C5.19304 17.5613 5.17303 17.5613 5.16303 17.5613ZM11.7243 21.8821C11.4942 21.8821 11.2642 21.8021 11.0841 21.652C10.8541 21.462 10.7241 21.1819 10.7241 20.8819V15.9109L8.08358 13.2705H3.11264C2.81259 13.2705 2.53254 13.1404 2.3425 12.9104C2.15246 12.6803 2.07245 12.3803 2.12246 12.0902C2.19247 11.7102 2.84259 8.36953 4.70294 7.12929C6.33325 6.04909 8.96375 6.49918 10.244 6.80923C11.5442 4.96889 13.2546 3.4286 15.2349 2.33839C17.4553 1.11816 19.9858 0.518051 22.4963 0.498047C23.0464 0.498047 23.4865 0.948132 23.4865 1.49824C23.4865 5.0389 22.3763 9.97983 17.1753 13.7605C17.4853 15.0408 17.9354 17.6613 16.8552 19.2816C15.615 21.1419 12.2744 21.7921 11.8943 21.8621C11.8343 21.8721 11.7743 21.8821 11.7143 21.8821H11.7243ZM12.7245 16.181V19.6016C13.7146 19.2916 14.7948 18.7915 15.2049 18.1814C15.675 17.4812 15.605 16.091 15.385 14.9008C14.5248 15.3808 13.6346 15.8109 12.7245 16.181ZM9.66388 12.0302L11.9643 14.3307C13.1845 13.8306 14.3648 13.2204 15.485 12.5103C19.9358 9.51974 21.2361 5.60901 21.4561 2.53843C19.6157 2.67846 17.8254 3.20856 16.2051 4.09872C14.2847 5.14892 12.6544 6.68921 11.4942 8.54956C10.7841 9.65977 10.174 10.82 9.66388 12.0302ZM4.39289 11.2701H7.81353C8.1936 10.3599 8.63368 9.46974 9.11377 8.60957C7.92355 8.38953 6.51329 8.31952 5.81315 8.78961C5.19304 9.19968 4.70294 10.3099 4.39289 11.2701Z\" fill=\"#673DE6\"\/>\n                <\/svg>\n                <p class=\"protip__title\">\n                    &#128161; Profi-Tipp                <\/p>\n            <\/div>\n            <p class=\"protip__content\">Hostinger bietet vorgefertigte Vorlagen sowohl f&uuml;r Docker als auch f&uuml;r Node.js an. Sie k&ouml;nnen jedoch jeweils nur eine Vorlage gleichzeitig installieren. Wir empfehlen, zun&auml;chst Docker mithilfe der Vorlage einzurichten und anschlie&szlig;end Node.js manuell per Befehlen zu installieren, da dieser Einrichtungsprozess einfacher ist.<\/p>\n                    <\/div>\n        \n\n\n\n<figure class=\"wp-block-image size-large\"><a href=\"\/de\/vps-server\" target=\"_blank\" rel=\"noreferrer noopener\"><img decoding=\"async\" width=\"1024\" height=\"300\" src=\"https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/29\/2024\/02\/DE-VPS-hosting_in-text-banner.png\/w=1024,h=1024,fit=scale-down\" alt=\"\" class=\"wp-image-3556\" srcset=\"https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/29\/2024\/02\/DE-VPS-hosting_in-text-banner.png\/w=1024,fit=scale-down 1024w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/29\/2024\/02\/DE-VPS-hosting_in-text-banner.png\/w=300,fit=scale-down 300w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/29\/2024\/02\/DE-VPS-hosting_in-text-banner.png\/w=768,fit=scale-down 768w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/a><\/figure>\n\n\n\n<\/p><h2 class=\"wp-block-heading\" id=\"h-setting-up-a-node-js-app-in-docker\">Einrichten einer Node.js-App in Docker<\/h2><p class=\"wp-block-paragraph\">Um einen einfachen Node.js-Docker-Container zu erstellen, gehen Sie wie folgt vor. <strong>Zun&auml;chst w&auml;hlen Sie ein Basis-Image aus und zum Schluss f&uuml;hren Sie Ihre erste containerisierte App aus<\/strong>.<\/p><h3 class=\"wp-block-heading\" id=\"h-1-choosing-the-right-node-js-docker-image\">1. Das richtige Node.js-Docker-Image ausw&auml;hlen<\/h3><p class=\"wp-block-paragraph\">W&auml;hlen Sie zun&auml;chst ein Basis-Image f&uuml;r Ihren Container aus. Das <a href=\"https:\/\/hub.docker.com\/_\/node\" target=\"_blank\" rel=\"noopener\">offizielle Node.js-Docker-Image<\/a> stellt mehrere vorgefertigte Optionen bereit, die f&uuml;r unterschiedliche Anforderungen optimiert sind.<\/p><p class=\"wp-block-paragraph\">Zu den wichtigsten Typen geh&ouml;ren:<\/p><ul class=\"wp-block-list\">\n<li><strong>Vollst&auml;ndige Bilder<\/strong>. Gr&ouml;&szlig;ere Images, die viele Tools und Bibliotheken enthalten und sich daher gut f&uuml;r Entwicklung und Debugging eignen. Beispiel: <strong>node:24<\/strong>.<\/li>\n\n\n\n<li><strong>Schlanke Images<\/strong>. Leichter als vollst&auml;ndige Images und enth&auml;lt nur die wesentlichen Komponenten, die zum Ausf&uuml;hren von Node.js ben&ouml;tigt werden. Beispiel: <strong>node:24-slim<\/strong>.<\/li>\n\n\n\n<li><strong>Alpine Bilder<\/strong>. &Auml;u&szlig;erst schlanke Images auf Basis von Alpine Linux. Durch ihre geringe Gr&ouml;&szlig;e verringern sie die Angriffsfl&auml;che und sind damit das beste Docker-Image f&uuml;r Node.js in Produktionsumgebungen. Beispiel: <strong>node:24-alpine<\/strong>.<\/li>\n<\/ul><p class=\"wp-block-paragraph\">F&uuml;r produktive Umgebungen <strong>empfehlen wir, Alpine-Images zu verwenden<\/strong>, damit Ihre Container klein, schnell und sicher bleiben.<\/p><h3 class=\"wp-block-heading\" id=\"h-2-creating-a-basic-node-js-application\">2. Eine einfache Node.js-Anwendung erstellen<\/h3><p class=\"wp-block-paragraph\">Erstellen Sie als N&auml;chstes eine einfache Node.js-App. &Ouml;ffnen Sie Ihr Terminal und stellen Sie per SSH eine Verbindung zu Ihrem VPS her:<\/p><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">ssh root@your_vps_ip<\/pre><p class=\"wp-block-paragraph\">Hostinger-VPS-Nutzer finden die IP-Adresse ihres Servers in <strong>hPanel &rarr; VPS &rarr; Manage &rarr; Overview &rarr; VPS details<\/strong>.<\/p><div class=\"wp-block-image\">\n<figure data-wp-context='{\"imageId\":\"6a6fa4dc26234\"}' data-wp-interactive=\"core\/image\" data-wp-key=\"6a6fa4dc26234\" class=\"aligncenter size-large is-resized wp-lightbox-container\"><img decoding=\"async\" width=\"1136\" height=\"364\" data-wp-class--hide=\"state.isContentHidden\" data-wp-class--show=\"state.isContentVisible\" data-wp-init=\"callbacks.setButtonStyles\" data-wp-on--click=\"actions.showLightbox\" data-wp-on--load=\"callbacks.setButtonStyles\" data-wp-on--pointerdown=\"actions.preloadImage\" data-wp-on--pointerenter=\"actions.preloadImageWithDelay\" data-wp-on--pointerleave=\"actions.cancelPreload\" data-wp-on-window--resize=\"callbacks.setButtonStyles\" src=\"https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/29\/2026\/05\/vps-overview-ipv4-hpanel.png\/w=1024,h=1024,fit=scale-down\" alt=\"Die IPv4-Informationen zum VPS in hPanel\" class=\"wp-image-12038\" style=\"width:840px;height:auto\" srcset=\"https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/29\/2026\/05\/vps-overview-ipv4-hpanel.png\/w=1136,fit=scale-down 1136w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/29\/2026\/05\/vps-overview-ipv4-hpanel.png\/w=300,fit=scale-down 300w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/29\/2026\/05\/vps-overview-ipv4-hpanel.png\/w=1024,fit=scale-down 1024w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/29\/2026\/05\/vps-overview-ipv4-hpanel.png\/w=768,fit=scale-down 768w\" sizes=\"(max-width: 1136px) 100vw, 1136px\" \/><button class=\"lightbox-trigger\" type=\"button\" aria-haspopup=\"dialog\" data-wp-bind--aria-label=\"state.thisImage.triggerButtonAriaLabel\" data-wp-init=\"callbacks.initTriggerButton\" data-wp-on--click=\"actions.showLightbox\" data-wp-style--right=\"state.thisImage.buttonRight\" data-wp-style--top=\"state.thisImage.buttonTop\">\n\t\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"12\" height=\"12\" fill=\"none\" viewbox=\"0 0 12 12\">\n\t\t\t\t<path fill=\"#fff\" d=\"M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z\"><\/path>\n\t\t\t<\/svg>\n\t\t<\/button><\/figure>\n<\/div><p class=\"wp-block-paragraph\">Nachdem Sie sich angemeldet haben, erstellen Sie ein neues Projektverzeichnis und wechseln Sie in dieses Verzeichnis:<\/p><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">mkdir node-docker-app &amp;&amp; cd node-docker-app<\/pre><p class=\"wp-block-paragraph\">Initialisieren Sie das Projekt mit <strong>npm<\/strong>. Dabei wird eine Datei namens <strong>package.json<\/strong> erzeugt, mit der Sie die Metadaten und Abh&auml;ngigkeiten Ihrer App verwalten.<\/p><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">npm init -y<\/pre><div class=\"wp-block-image\">\n<figure data-wp-context='{\"imageId\":\"6a6fa4dc27980\"}' data-wp-interactive=\"core\/image\" data-wp-key=\"6a6fa4dc27980\" class=\"aligncenter size-large wp-lightbox-container\"><img decoding=\"async\" width=\"1024\" height=\"567\" data-wp-class--hide=\"state.isContentHidden\" data-wp-class--show=\"state.isContentVisible\" data-wp-init=\"callbacks.setButtonStyles\" data-wp-on--click=\"actions.showLightbox\" data-wp-on--load=\"callbacks.setButtonStyles\" data-wp-on--pointerdown=\"actions.preloadImage\" data-wp-on--pointerenter=\"actions.preloadImageWithDelay\" data-wp-on--pointerleave=\"actions.cancelPreload\" data-wp-on-window--resize=\"callbacks.setButtonStyles\" src=\"https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/29\/2026\/05\/terminal-mkdir-cd-npm-init.png\/w=1024,h=1024,fit=scale-down\" alt=\"Eine Terminalausgabe nach Ausf&uuml;hrung der Befehle mkdir, cd und npm init\" class=\"wp-image-11898\" srcset=\"https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/29\/2026\/05\/terminal-mkdir-cd-npm-init.png\/w=1024,fit=scale-down 1024w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/29\/2026\/05\/terminal-mkdir-cd-npm-init.png\/w=300,fit=scale-down 300w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/29\/2026\/05\/terminal-mkdir-cd-npm-init.png\/w=768,fit=scale-down 768w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><button class=\"lightbox-trigger\" type=\"button\" aria-haspopup=\"dialog\" data-wp-bind--aria-label=\"state.thisImage.triggerButtonAriaLabel\" data-wp-init=\"callbacks.initTriggerButton\" data-wp-on--click=\"actions.showLightbox\" data-wp-style--right=\"state.thisImage.buttonRight\" data-wp-style--top=\"state.thisImage.buttonTop\">\n\t\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"12\" height=\"12\" fill=\"none\" viewbox=\"0 0 12 12\">\n\t\t\t\t<path fill=\"#fff\" d=\"M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z\"><\/path>\n\t\t\t<\/svg>\n\t\t<\/button><\/figure>\n<\/div><p class=\"wp-block-paragraph\">Erstellen Sie nun mit einem Texteditor wie nano eine Datei mit dem Namen <strong>app.js<\/strong>:<\/p><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">nano app.js<\/pre><p class=\"wp-block-paragraph\">F&uuml;gen Sie den folgenden Code in die Datei ein. Dieses Skript richtet einen einfachen HTTP-Server ein, der mit &bdquo;Hello, Docker!&ldquo; antwortet:<\/p><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">const http = require(\"http\");\n\nconst port = 3000;\n\nconst server = http.createServer((req, res) =&gt; {\n  res.writeHead(200, { \"Content-Type\": \"text\/plain\" });\n  res.end(\"Hello, Docker!\");\n});\n\nserver.listen(port, () =&gt; {\n  console.log(`Server running at http:\/\/localhost:${port}`);\n});<\/pre><div class=\"wp-block-image\">\n<figure data-wp-context='{\"imageId\":\"6a6fa4dc290db\"}' data-wp-interactive=\"core\/image\" data-wp-key=\"6a6fa4dc290db\" class=\"aligncenter size-large wp-lightbox-container\"><img decoding=\"async\" width=\"1024\" height=\"597\" data-wp-class--hide=\"state.isContentHidden\" data-wp-class--show=\"state.isContentVisible\" data-wp-init=\"callbacks.setButtonStyles\" data-wp-on--click=\"actions.showLightbox\" data-wp-on--load=\"callbacks.setButtonStyles\" data-wp-on--pointerdown=\"actions.preloadImage\" data-wp-on--pointerenter=\"actions.preloadImageWithDelay\" data-wp-on--pointerleave=\"actions.cancelPreload\" data-wp-on-window--resize=\"callbacks.setButtonStyles\" src=\"https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/29\/2026\/05\/terminal-nano-app-js.png\/w=1024,h=1024,fit=scale-down\" alt=\"Der Inhalt der Datei app.js im Nano-Texteditor\" class=\"wp-image-11899\" srcset=\"https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/29\/2026\/05\/terminal-nano-app-js.png\/w=1024,fit=scale-down 1024w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/29\/2026\/05\/terminal-nano-app-js.png\/w=300,fit=scale-down 300w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/29\/2026\/05\/terminal-nano-app-js.png\/w=768,fit=scale-down 768w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><button class=\"lightbox-trigger\" type=\"button\" aria-haspopup=\"dialog\" data-wp-bind--aria-label=\"state.thisImage.triggerButtonAriaLabel\" data-wp-init=\"callbacks.initTriggerButton\" data-wp-on--click=\"actions.showLightbox\" data-wp-style--right=\"state.thisImage.buttonRight\" data-wp-style--top=\"state.thisImage.buttonTop\">\n\t\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"12\" height=\"12\" fill=\"none\" viewbox=\"0 0 12 12\">\n\t\t\t\t<path fill=\"#fff\" d=\"M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z\"><\/path>\n\t\t\t<\/svg>\n\t\t<\/button><\/figure>\n<\/div><p class=\"wp-block-paragraph\">Speichern Sie die Datei und beenden Sie <strong>nano<\/strong>, indem Sie <strong>Strg + X &rarr; Y &rarr; Eingabetaste<\/strong> dr&uuml;cken.<\/p><h3 class=\"wp-block-heading\" id=\"h-3-writing-a-simple-dockerfile\">3. Ein einfaches Dockerfile schreiben<\/h3><p class=\"wp-block-paragraph\">Eine Dockerfile ist eine Textdatei mit Schritt-f&uuml;r-Schritt-Anweisungen zum Erstellen eines Docker-Images. Erstellen Sie im Hauptverzeichnis Ihres Projekts eine Datei mit dem Namen <strong>Dockerfile<\/strong> ohne Erweiterung:<\/p><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">nano Dockerfile<\/pre><p class=\"wp-block-paragraph\">F&uuml;gen Sie den folgenden Inhalt hinzu. Dies ist ein einfaches Beispiel f&uuml;r eine Node.js-Dockerfile:<\/p><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\"># Alpine-basiertes Node.js-Image verwenden\nFROM node:24-alpine\n\n# Arbeitsverzeichnis im Container festlegen\nWORKDIR \/app\n\n# package.json und package-lock.json kopieren\nCOPY package*.json .\/\n\n# Anwendungsabh&auml;ngigkeiten installieren\nRUN npm install\n\n# Restlichen Anwendungsquellcode kopieren\nCOPY . .\n\n# Port 3000 f&uuml;r externe Zugriffe freigeben\nEXPOSE 3000\n\n# Befehl zum Starten der Anwendung\nCMD [\"node\", \"app.js\"]<\/pre><div class=\"wp-block-image\">\n<figure data-wp-context='{\"imageId\":\"6a6fa4dc2aace\"}' data-wp-interactive=\"core\/image\" data-wp-key=\"6a6fa4dc2aace\" class=\"aligncenter size-large wp-lightbox-container\"><img decoding=\"async\" width=\"1024\" height=\"586\" data-wp-class--hide=\"state.isContentHidden\" data-wp-class--show=\"state.isContentVisible\" data-wp-init=\"callbacks.setButtonStyles\" data-wp-on--click=\"actions.showLightbox\" data-wp-on--load=\"callbacks.setButtonStyles\" data-wp-on--pointerdown=\"actions.preloadImage\" data-wp-on--pointerenter=\"actions.preloadImageWithDelay\" data-wp-on--pointerleave=\"actions.cancelPreload\" data-wp-on-window--resize=\"callbacks.setButtonStyles\" src=\"https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/29\/2026\/05\/terminal-nano-dockerfile.png\/w=1024,h=1024,fit=scale-down\" alt=\"Der Inhalt der Datei &bdquo;Dockerfile&ldquo; in der Ansicht des Texteditors nano\" class=\"wp-image-11900\" srcset=\"https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/29\/2026\/05\/terminal-nano-dockerfile.png\/w=1024,fit=scale-down 1024w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/29\/2026\/05\/terminal-nano-dockerfile.png\/w=300,fit=scale-down 300w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/29\/2026\/05\/terminal-nano-dockerfile.png\/w=768,fit=scale-down 768w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><button class=\"lightbox-trigger\" type=\"button\" aria-haspopup=\"dialog\" data-wp-bind--aria-label=\"state.thisImage.triggerButtonAriaLabel\" data-wp-init=\"callbacks.initTriggerButton\" data-wp-on--click=\"actions.showLightbox\" data-wp-style--right=\"state.thisImage.buttonRight\" data-wp-style--top=\"state.thisImage.buttonTop\">\n\t\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"12\" height=\"12\" fill=\"none\" viewbox=\"0 0 12 12\">\n\t\t\t\t<path fill=\"#fff\" d=\"M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z\"><\/path>\n\t\t\t<\/svg>\n\t\t<\/button><\/figure>\n<\/div><p class=\"wp-block-paragraph\">Speichern Sie die Datei und schlie&szlig;en Sie sie, wenn Sie fertig sind.<\/p><h3 class=\"wp-block-heading\" id=\"h-4-building-the-image\">4. Erstellen des Images<\/h3><p class=\"wp-block-paragraph\">Nachdem Sie die Dockerfile erstellt haben, bauen Sie Ihr Docker-Image, indem Sie in dem Projektverzeichnis diesen Befehl ausf&uuml;hren:<\/p><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">docker build -t node-docker-app .<\/pre><p class=\"wp-block-paragraph\">Der Schalter <strong>-t<\/strong> versieht das Image mit dem Namen <strong>node-docker-app<\/strong>. Wenn der Build erfolgreich abgeschlossen ist, zeigt Docker eine Best&auml;tigungsnachricht an.<\/p><div class=\"wp-block-image\">\n<figure data-wp-context='{\"imageId\":\"6a6fa4dc2c65b\"}' data-wp-interactive=\"core\/image\" data-wp-key=\"6a6fa4dc2c65b\" class=\"aligncenter size-large wp-lightbox-container\"><img decoding=\"async\" width=\"1024\" height=\"600\" data-wp-class--hide=\"state.isContentHidden\" data-wp-class--show=\"state.isContentVisible\" data-wp-init=\"callbacks.setButtonStyles\" data-wp-on--click=\"actions.showLightbox\" data-wp-on--load=\"callbacks.setButtonStyles\" data-wp-on--pointerdown=\"actions.preloadImage\" data-wp-on--pointerenter=\"actions.preloadImageWithDelay\" data-wp-on--pointerleave=\"actions.cancelPreload\" data-wp-on-window--resize=\"callbacks.setButtonStyles\" src=\"https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/29\/2026\/05\/terminal-docker-build.png\/w=1024,h=1024,fit=scale-down\" alt=\"Eine Terminalausgabe nach Ausf&uuml;hrung des Befehls `docker build`\" class=\"wp-image-11901\" srcset=\"https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/29\/2026\/05\/terminal-docker-build.png\/w=1024,fit=scale-down 1024w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/29\/2026\/05\/terminal-docker-build.png\/w=300,fit=scale-down 300w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/29\/2026\/05\/terminal-docker-build.png\/w=768,fit=scale-down 768w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><button class=\"lightbox-trigger\" type=\"button\" aria-haspopup=\"dialog\" data-wp-bind--aria-label=\"state.thisImage.triggerButtonAriaLabel\" data-wp-init=\"callbacks.initTriggerButton\" data-wp-on--click=\"actions.showLightbox\" data-wp-style--right=\"state.thisImage.buttonRight\" data-wp-style--top=\"state.thisImage.buttonTop\">\n\t\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"12\" height=\"12\" fill=\"none\" viewbox=\"0 0 12 12\">\n\t\t\t\t<path fill=\"#fff\" d=\"M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z\"><\/path>\n\t\t\t<\/svg>\n\t\t<\/button><\/figure>\n<\/div><h3 class=\"wp-block-heading\" id=\"h-5-running-the-container\">5. Den Container ausf&uuml;hren<\/h3><p class=\"wp-block-paragraph\">Sobald das Image erstellt ist, f&uuml;hren Sie Node.js in einem Docker-Container mit diesem Befehl aus:<\/p><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">docker run -d -p 3000:3000 node-docker-app<\/pre><p class=\"wp-block-paragraph\">Der Parameter <strong>-p 3000:3000<\/strong> ordnet Port <strong>3000<\/strong> auf Ihrem Server Port <strong>3000<\/strong> im Container zu, w&auml;hrend der Parameter <strong>-d<\/strong> den Container im Detached-Modus (also im Hintergrund) ausf&uuml;hrt.<\/p><p class=\"wp-block-paragraph\">&Ouml;ffnen Sie Ihren Browser und gehen Sie zu <strong>http:\/\/your_vps_ip:3000<\/strong>, um zu &uuml;berpr&uuml;fen, ob es funktioniert. Sie sollten die Meldung &bdquo;Hello, Docker!&ldquo; sehen.<\/p><div class=\"wp-block-image\">\n<figure data-wp-context='{\"imageId\":\"6a6fa4dc2e201\"}' data-wp-interactive=\"core\/image\" data-wp-key=\"6a6fa4dc2e201\" class=\"aligncenter size-full wp-lightbox-container\"><img decoding=\"async\" width=\"830\" height=\"320\" data-wp-class--hide=\"state.isContentHidden\" data-wp-class--show=\"state.isContentVisible\" data-wp-init=\"callbacks.setButtonStyles\" data-wp-on--click=\"actions.showLightbox\" data-wp-on--load=\"callbacks.setButtonStyles\" data-wp-on--pointerdown=\"actions.preloadImage\" data-wp-on--pointerenter=\"actions.preloadImageWithDelay\" data-wp-on--pointerleave=\"actions.cancelPreload\" data-wp-on-window--resize=\"callbacks.setButtonStyles\" src=\"https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/29\/2026\/05\/browser-hello-docker.png\/public\" alt=\"Die Meldung &bdquo;Hello Docker&ldquo; im Browser\" class=\"wp-image-11925\" srcset=\"https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/29\/2026\/05\/browser-hello-docker.png\/w=830,fit=scale-down 830w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/29\/2026\/05\/browser-hello-docker.png\/w=300,fit=scale-down 300w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/29\/2026\/05\/browser-hello-docker.png\/w=768,fit=scale-down 768w\" sizes=\"(max-width: 830px) 100vw, 830px\" \/><button class=\"lightbox-trigger\" type=\"button\" aria-haspopup=\"dialog\" data-wp-bind--aria-label=\"state.thisImage.triggerButtonAriaLabel\" data-wp-init=\"callbacks.initTriggerButton\" data-wp-on--click=\"actions.showLightbox\" data-wp-style--right=\"state.thisImage.buttonRight\" data-wp-style--top=\"state.thisImage.buttonTop\">\n\t\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"12\" height=\"12\" fill=\"none\" viewbox=\"0 0 12 12\">\n\t\t\t\t<path fill=\"#fff\" d=\"M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z\"><\/path>\n\t\t\t<\/svg>\n\t\t<\/button><\/figure>\n<\/div><p class=\"wp-block-paragraph\">Nachdem Sie nun eine einfache Anwendung erstellt und ausgef&uuml;hrt haben, sehen wir uns an, wie Sie eine komplexere Node.js-App dockerisieren.<\/p><h2 class=\"wp-block-heading\" id=\"h-containerizing-an-existing-node-js-application\">Eine bestehende Node.js-Anwendung containerisieren<\/h2><p class=\"wp-block-paragraph\">Um ein bestehendes Node.js-Projekt zu containerisieren, <strong>bereiten Sie Ihre App vor, erstellen Sie eine Ignore-Datei, um das Image schlank zu halten, und schreiben Sie ein optimiertes Dockerfile<\/strong>.<\/p><h3 class=\"wp-block-heading\" id=\"h-1-preparing-the-application-for-docker\">1. Die Anwendung f&uuml;r Docker vorbereiten<\/h3><p class=\"wp-block-paragraph\">Bevor Sie beginnen, stellen Sie sicher, dass Ihr bestehendes Projekt f&uuml;r die Containerisierung bereit ist.<\/p><ul class=\"wp-block-list\">\n<li><strong>&Uuml;berpr&uuml;fen Sie die Datei package.json<\/strong>. Stellen Sie sicher, dass alle Abh&auml;ngigkeiten korrekt aufgef&uuml;hrt sind und ein <strong>Startskript<\/strong> zum Starten der App enthalten ist.<\/li>\n\n\n\n<li><strong>Abh&auml;ngigkeiten sperren<\/strong>. F&uuml;hren Sie <strong>npm install<\/strong> aus, um die Datei <strong>package-lock.json<\/strong> zu erstellen oder zu aktualisieren. Dies garantiert in allen Umgebungen konsistente Versionen der Abh&auml;ngigkeiten.<\/li>\n\n\n\n<li><strong>Testen Sie lokal<\/strong>. F&uuml;hren Sie auf Ihrem Rechner den Befehl <strong>npm start<\/strong> aus, um zu &uuml;berpr&uuml;fen, ob alles wie erwartet funktioniert, bevor Sie fortfahren.<\/li>\n<\/ul><h3 class=\"wp-block-heading\" id=\"h-2-creating-a-dockerignore-file\">2. Erstellen einer .dockerignore-Datei<\/h3><p class=\"wp-block-paragraph\">Eine <strong>.dockerignore<\/strong> -Datei verhindert, dass bestimmte Dateien und Verzeichnisse in Ihr Docker-Image kopiert werden. Dadurch bleibt das Bild klein und gesch&uuml;tzt.<\/p><p class=\"wp-block-paragraph\">Erstellen Sie im Projektstammverzeichnis mit <strong>nano<\/strong> eine Datei mit dem Namen <strong>.dockerignore<\/strong> und f&uuml;gen Sie den folgenden Inhalt ein:<\/p><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">node_modules\nnpm-debug.log\n.env\n.DS_Store\nlogs\/\ntmp\/\ndist\/\ncoverage\/<\/pre><p class=\"wp-block-paragraph\">Diese Datei schlie&szlig;t Folgendes aus:<\/p><ul class=\"wp-block-list\">\n<li><strong>node_modules<\/strong>. Der Container installiert die Abh&auml;ngigkeiten, sodass Sie den lokalen Ordner nicht ben&ouml;tigen.<\/li>\n\n\n\n<li><strong>npm-debug.log<\/strong>, <strong>logs\/<\/strong>, <strong>tmp\/<\/strong>. Protokolle und tempor&auml;re Dateien, die in der Produktion nicht ben&ouml;tigt werden.<strong>env<\/strong>. Enth&auml;lt vertrauliche Schl&uuml;ssel und darf niemals in ein Bild eingef&uuml;gt werden.<\/li>\n\n\n\n<li><strong>dist\/<\/strong>, <strong>coverage\/<\/strong>. Build-Artefakte und Testberichte, die nicht ben&ouml;tigt werden, um die App auszuf&uuml;hren.<\/li>\n<\/ul><p>\n\n\n        <div class=\"protip\">\n            <div class=\"protip__heading\">\n                <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\">\n                    <path d=\"M1.49234 23.5024C1.23229 23.5024 0.972242 23.4024 0.782206 23.2123C0.562165 22.9923 0.452144 22.6822 0.502153 22.3722C0.562165 21.9221 1.14227 17.9113 3.00262 16.351C3.63274 15.8209 4.43289 15.5509 5.26305 15.5609C6.09321 15.5909 6.87335 15.9109 7.47347 16.4911C8.6937 17.6913 8.76371 19.6717 7.6435 20.9919C6.0832 22.8523 2.08245 23.4324 1.63237 23.4924C1.59236 23.4924 1.54235 23.4924 1.50234 23.4924L1.49234 23.5024ZM5.16303 17.5613C4.84297 17.5613 4.53291 17.6713 4.29287 17.8813C3.60274 18.4614 3.07264 19.9317 2.75258 21.242C4.06282 20.9219 5.5331 20.3918 6.11321 19.7017C6.55329 19.1716 6.54329 18.3814 6.0832 17.9213C5.85316 17.7013 5.5431 17.5713 5.20304 17.5613C5.19304 17.5613 5.17303 17.5613 5.16303 17.5613ZM11.7243 21.8821C11.4942 21.8821 11.2642 21.8021 11.0841 21.652C10.8541 21.462 10.7241 21.1819 10.7241 20.8819V15.9109L8.08358 13.2705H3.11264C2.81259 13.2705 2.53254 13.1404 2.3425 12.9104C2.15246 12.6803 2.07245 12.3803 2.12246 12.0902C2.19247 11.7102 2.84259 8.36953 4.70294 7.12929C6.33325 6.04909 8.96375 6.49918 10.244 6.80923C11.5442 4.96889 13.2546 3.4286 15.2349 2.33839C17.4553 1.11816 19.9858 0.518051 22.4963 0.498047C23.0464 0.498047 23.4865 0.948132 23.4865 1.49824C23.4865 5.0389 22.3763 9.97983 17.1753 13.7605C17.4853 15.0408 17.9354 17.6613 16.8552 19.2816C15.615 21.1419 12.2744 21.7921 11.8943 21.8621C11.8343 21.8721 11.7743 21.8821 11.7143 21.8821H11.7243ZM12.7245 16.181V19.6016C13.7146 19.2916 14.7948 18.7915 15.2049 18.1814C15.675 17.4812 15.605 16.091 15.385 14.9008C14.5248 15.3808 13.6346 15.8109 12.7245 16.181ZM9.66388 12.0302L11.9643 14.3307C13.1845 13.8306 14.3648 13.2204 15.485 12.5103C19.9358 9.51974 21.2361 5.60901 21.4561 2.53843C19.6157 2.67846 17.8254 3.20856 16.2051 4.09872C14.2847 5.14892 12.6544 6.68921 11.4942 8.54956C10.7841 9.65977 10.174 10.82 9.66388 12.0302ZM4.39289 11.2701H7.81353C8.1936 10.3599 8.63368 9.46974 9.11377 8.60957C7.92355 8.38953 6.51329 8.31952 5.81315 8.78961C5.19304 9.19968 4.70294 10.3099 4.39289 11.2701Z\" fill=\"#673DE6\"\/>\n                <\/svg>\n                <p class=\"protip__title\">\n                    &#128161; Profi-Tipp                <\/p>\n            <\/div>\n            <p class=\"protip__content\">&Uuml;berpr&uuml;fen Sie Ihre Datei <strong>.dockerignore<\/strong> regelm&auml;&szlig;ig, damit sie stets zu Ihrem Projekt passt. Schlie&szlig;en Sie stets sensible Informationen wie API-Schl&uuml;ssel und Zugangsdaten aus.<\/p>\n                    <\/div>\n        \n\n\n\n<\/p><h3 class=\"wp-block-heading\" id=\"h-3-writing-a-production-ready-dockerfile\">3. Ein produktionsreifes Dockerfile schreiben<\/h3><p class=\"wp-block-paragraph\">Eine produktionsreife Dockerfile optimiert Ihre Anwendung in Bezug auf Sicherheit und Leistung. Es verwendet ein minimales Basis-Image, installiert nur Produktionsabh&auml;ngigkeiten und setzt die richtigen Umgebungsvariablen.<\/p><p class=\"wp-block-paragraph\">Hier ein Beispiel:<\/p><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\"># Leichtgewichtiges Node.js-Basis-Image verwenden\nFROM node:24-alpine\n\n# Arbeitsverzeichnis festlegen\nWORKDIR \/usr\/src\/app\n\n# Paketdateien kopieren und nur Produktionsabh&auml;ngigkeiten installieren\nCOPY package*.json .\/\nRUN npm ci --omit=dev\n\n# Anwendungsdateien kopieren\nCOPY . .\n\n# Umgebungsvariablen f&uuml;r die Produktionsumgebung festlegen\nENV NODE_ENV=production\n\n# Anwendungsport freigeben\nEXPOSE 3000\n\n# Befehl zum Starten der Anwendung\nCMD [\"node\", \"app.js\"]<\/pre><p class=\"wp-block-paragraph\">Jede Anweisung in der Dockerfile hat einen bestimmten Zweck:<\/p><figure tabindex=\"0\" class=\"wp-block-table\"><table><tbody><tr><td><strong>Befehl<\/strong><\/td><td><strong>Zweck<\/strong><\/td><\/tr><tr><td>FROM node:24-alpine<\/td><td>Verwendet ein minimales Node.js-Basis-Image.<\/td><\/tr><tr><td>WORKDIR \/usr\/src\/app<\/td><td>Legt das Arbeitsverzeichnis f&uuml;r nachfolgende Befehle fest.<\/td><\/tr><tr><td>COPY package*.json .\/<\/td><td>Kopiert die Dateien f&uuml;r die Abh&auml;ngigkeitsverwaltung in den Container.<\/td><\/tr><tr><td>RUN npm ci &ndash;omit=dev<\/td><td>Installiert nur Produktionsabh&auml;ngigkeiten, um die Gr&ouml;&szlig;e des Images zu reduzieren.<\/td><\/tr><tr><td>COPY . .<\/td><td>Kopiert den restlichen Quellcode der Anwendung.<\/td><\/tr><tr><td>ENV NODE_ENV=production<\/td><td>Konfiguriert die Anwendung f&uuml;r den Betrieb in der Produktionsumgebung, um die Leistung zu verbessern.<\/td><\/tr><tr><td>EXPOSE 3000<\/td><td>Dokumentiert, dass der Container auf Port 3000 lauscht.<\/td><\/tr><tr><td>CMD [&ldquo;node&rdquo;, &ldquo;app.js&rdquo;]<\/td><td>Legt den Standardbefehl fest, der beim Start des Containers ausgef&uuml;hrt wird.<\/td><\/tr><\/tbody><\/table><\/figure><h3 class=\"wp-block-heading\" id=\"h-4-optimizing-with-multi-stage-builds\">4. Optimierung mit mehrstufigen Builds<\/h3><p class=\"wp-block-paragraph\">F&uuml;r Apps, die einen Build-Schritt ben&ouml;tigen, etwa das Transpilieren von TypeScript oder das B&uuml;ndeln mit Webpack, eignet sich ein mehrstufiges Dockerfile f&uuml;r Node.js am besten.<\/p><p class=\"wp-block-paragraph\">Bei dieser Technik wird die Build-Umgebung von der sp&auml;teren Laufzeitumgebung getrennt, was zu einem deutlich kleineren Produktions-Image f&uuml;hrt.<\/p><p class=\"wp-block-paragraph\">Ein Multi-Stage-Build verwendet mehrere <strong>FROM<\/strong> -Anweisungen. Die erste Phase erstellt die App und ihre Assets, und die zweite Phase kopiert nur die ben&ouml;tigten Build-Dateien in ein sauberes Image.<\/p><div class=\"wp-block-image\">\n<figure data-wp-context='{\"imageId\":\"6a6fa4dc2fe85\"}' data-wp-interactive=\"core\/image\" data-wp-key=\"6a6fa4dc2fe85\" class=\"aligncenter size-large wp-lightbox-container\"><img decoding=\"async\" width=\"1024\" height=\"611\" data-wp-class--hide=\"state.isContentHidden\" data-wp-class--show=\"state.isContentVisible\" data-wp-init=\"callbacks.setButtonStyles\" data-wp-on--click=\"actions.showLightbox\" data-wp-on--load=\"callbacks.setButtonStyles\" data-wp-on--pointerdown=\"actions.preloadImage\" data-wp-on--pointerenter=\"actions.preloadImageWithDelay\" data-wp-on--pointerleave=\"actions.cancelPreload\" data-wp-on-window--resize=\"callbacks.setButtonStyles\" src=\"https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/29\/2026\/06\/mehrstufiger-Docker-Build-fur-Nodejs.png\/w=1024,h=1024,fit=scale-down\" alt=\"Das Diagramm zum mehrstufigen Docker-Build f&uuml;r Node.js\" class=\"wp-image-12594\" srcset=\"https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/29\/2026\/06\/mehrstufiger-Docker-Build-fur-Nodejs.png\/w=1024,fit=scale-down 1024w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/29\/2026\/06\/mehrstufiger-Docker-Build-fur-Nodejs.png\/w=300,fit=scale-down 300w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/29\/2026\/06\/mehrstufiger-Docker-Build-fur-Nodejs.png\/w=768,fit=scale-down 768w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><button class=\"lightbox-trigger\" type=\"button\" aria-haspopup=\"dialog\" data-wp-bind--aria-label=\"state.thisImage.triggerButtonAriaLabel\" data-wp-init=\"callbacks.initTriggerButton\" data-wp-on--click=\"actions.showLightbox\" data-wp-style--right=\"state.thisImage.buttonRight\" data-wp-style--top=\"state.thisImage.buttonTop\">\n\t\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"12\" height=\"12\" fill=\"none\" viewbox=\"0 0 12 12\">\n\t\t\t\t<path fill=\"#fff\" d=\"M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z\"><\/path>\n\t\t\t<\/svg>\n\t\t<\/button><\/figure>\n<\/div><p class=\"wp-block-paragraph\">Im Folgenden sehen Sie ein Beispiel f&uuml;r ein mehrstufiges Dockerfile:<\/p><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\"># Phase 1: Anwendung erstellen\nFROM node:24-alpine AS builder\nWORKDIR \/usr\/src\/app\nCOPY package*.json .\/\nRUN npm install\nCOPY . .\nRUN npm run build\n\n# Phase 2: Produktions-Image erstellen\nFROM node:24-alpine\nWORKDIR \/usr\/src\/app\n\n# Erstellte Dateien und Produktionsabh&auml;ngigkeiten kopieren\nCOPY --from=builder \/usr\/src\/app\/dist .\/dist\nCOPY package*.json .\/\nRUN npm ci --omit=dev\n\n# Umgebungsvariablen festlegen\nENV NODE_ENV=production\n\n# Anwendungsport freigeben\nEXPOSE 3000\n\n# Anwendung starten\nCMD [\"node\", \"dist\/app.js\"]<\/pre><p class=\"wp-block-paragraph\">Mit diesem Ansatz entsteht ein finales Image, das nur das enth&auml;lt, was zum Ausf&uuml;hren der App erforderlich ist &ndash; und dadurch kleiner, schneller und sicherer ist.<\/p><p class=\"wp-block-paragraph\">Nachdem Sie Ihre optimierte Dockerfile erstellt haben, bauen und starten Sie das Image mit denselben Befehlen <strong>docker build<\/strong> und <strong>docker run<\/strong> wie zuvor. Jetzt sind Sie bereit, Ihren Container zu testen.<\/p><h2 class=\"wp-block-heading\" id=\"h-testing-your-node-js-docker-container\">Testen Ihres Node.js-Docker-Containers<\/h2><p class=\"wp-block-paragraph\">Sobald Ihre Node.js-App in einem Container ausgef&uuml;hrt wird, m&uuml;ssen Sie sie testen, um sicherzustellen, dass sie sich in einer produktions&auml;hnlichen Umgebung wie erwartet verh&auml;lt.<\/p><p class=\"wp-block-paragraph\">Beginnen Sie, indem Sie eine Anfrage mit curl oder einem Webbrowser stellen. F&uuml;hren Sie in Ihrem Terminal Folgendes aus:<\/p><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">curl http:\/\/your_vps_ip:3000<\/pre><p class=\"wp-block-paragraph\">Dieser Befehl sollte die Meldung &bdquo;Hello, Docker!&ldquo; zur&uuml;ckgeben.<\/p><div class=\"wp-block-image\">\n<figure data-wp-context='{\"imageId\":\"6a6fa4dc31747\"}' data-wp-interactive=\"core\/image\" data-wp-key=\"6a6fa4dc31747\" class=\"aligncenter size-large wp-lightbox-container\"><img decoding=\"async\" width=\"1024\" height=\"67\" data-wp-class--hide=\"state.isContentHidden\" data-wp-class--show=\"state.isContentVisible\" data-wp-init=\"callbacks.setButtonStyles\" data-wp-on--click=\"actions.showLightbox\" data-wp-on--load=\"callbacks.setButtonStyles\" data-wp-on--pointerdown=\"actions.preloadImage\" data-wp-on--pointerenter=\"actions.preloadImageWithDelay\" data-wp-on--pointerleave=\"actions.cancelPreload\" data-wp-on-window--resize=\"callbacks.setButtonStyles\" src=\"https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/29\/2026\/05\/terminal-curl.png\/w=1024,h=1024,fit=scale-down\" alt=\"Eine Terminalausgabe nach Ausf&uuml;hren des curl-Befehls\" class=\"wp-image-11927\" srcset=\"https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/29\/2026\/05\/terminal-curl.png\/w=1024,fit=scale-down 1024w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/29\/2026\/05\/terminal-curl.png\/w=300,fit=scale-down 300w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/29\/2026\/05\/terminal-curl.png\/w=768,fit=scale-down 768w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><button class=\"lightbox-trigger\" type=\"button\" aria-haspopup=\"dialog\" data-wp-bind--aria-label=\"state.thisImage.triggerButtonAriaLabel\" data-wp-init=\"callbacks.initTriggerButton\" data-wp-on--click=\"actions.showLightbox\" data-wp-style--right=\"state.thisImage.buttonRight\" data-wp-style--top=\"state.thisImage.buttonTop\">\n\t\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"12\" height=\"12\" fill=\"none\" viewbox=\"0 0 12 12\">\n\t\t\t\t<path fill=\"#fff\" d=\"M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z\"><\/path>\n\t\t\t<\/svg>\n\t\t<\/button><\/figure>\n<\/div><p class=\"wp-block-paragraph\">&Uuml;berpr&uuml;fen Sie anschlie&szlig;end die Container-Logs, um das Verhalten zu &uuml;berwachen und Probleme zu diagnostizieren:<\/p><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">docker logs container_id_or_name<\/pre><div class=\"wp-block-image\">\n<figure data-wp-context='{\"imageId\":\"6a6fa4dc32e34\"}' data-wp-interactive=\"core\/image\" data-wp-key=\"6a6fa4dc32e34\" class=\"aligncenter size-large wp-lightbox-container\"><img decoding=\"async\" width=\"1024\" height=\"71\" data-wp-class--hide=\"state.isContentHidden\" data-wp-class--show=\"state.isContentVisible\" data-wp-init=\"callbacks.setButtonStyles\" data-wp-on--click=\"actions.showLightbox\" data-wp-on--load=\"callbacks.setButtonStyles\" data-wp-on--pointerdown=\"actions.preloadImage\" data-wp-on--pointerenter=\"actions.preloadImageWithDelay\" data-wp-on--pointerleave=\"actions.cancelPreload\" data-wp-on-window--resize=\"callbacks.setButtonStyles\" src=\"https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/29\/2026\/05\/terminal-docker-protokolle.png\/w=1024,h=1024,fit=scale-down\" alt=\"Eine Terminalausgabe nach Ausf&uuml;hrung des Befehls `docker logs`\" class=\"wp-image-11905\" srcset=\"https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/29\/2026\/05\/terminal-docker-protokolle.png\/w=1024,fit=scale-down 1024w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/29\/2026\/05\/terminal-docker-protokolle.png\/w=300,fit=scale-down 300w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/29\/2026\/05\/terminal-docker-protokolle.png\/w=768,fit=scale-down 768w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><button class=\"lightbox-trigger\" type=\"button\" aria-haspopup=\"dialog\" data-wp-bind--aria-label=\"state.thisImage.triggerButtonAriaLabel\" data-wp-init=\"callbacks.initTriggerButton\" data-wp-on--click=\"actions.showLightbox\" data-wp-style--right=\"state.thisImage.buttonRight\" data-wp-style--top=\"state.thisImage.buttonTop\">\n\t\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"12\" height=\"12\" fill=\"none\" viewbox=\"0 0 12 12\">\n\t\t\t\t<path fill=\"#fff\" d=\"M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z\"><\/path>\n\t\t\t<\/svg>\n\t\t<\/button><\/figure>\n<\/div><p class=\"wp-block-paragraph\">Wenn Sie die Container-ID nicht kennen, listen Sie die aktiven Container mit folgendem Befehl auf:<\/p><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">docker ps<\/pre><p class=\"wp-block-paragraph\">F&uuml;r interaktives Debugging &ouml;ffnen Sie eine Shell im laufenden Container mit docker exec:<\/p><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">docker exec -it container_id_or_name sh<\/pre><p class=\"wp-block-paragraph\">Damit k&ouml;nnen Sie das Dateisystem des Containers erkunden und Probleme direkt beheben.<\/p><p class=\"wp-block-paragraph\">Wenn bei der Ausf&uuml;hrung von Docker-Befehlen Berechtigungsprobleme auftreten, folgen Sie unserer Anleitung dazu, wie Sie den Fehler <a href=\"\/de\/tutorials\/docker-permission-denied-fehler-beheben\/\">Docker permission denied beheben<\/a>.<\/p><p class=\"wp-block-paragraph\">F&uuml;gen Sie abschlie&szlig;end eine Statuspr&uuml;fung hinzu. Dabei handelt es sich um einen leichtgewichtigen Endpoint (zum Beispiel <strong>\/health<\/strong>), der den Status Ihrer App meldet. Konfigurieren Sie Docker so, dass dieser Endpunkt in regelm&auml;&szlig;igen Abst&auml;nden angepingt wird, um zu best&auml;tigen, dass der Container ordnungsgem&auml;&szlig; l&auml;uft, und dass er automatisch neu gestartet wird, falls er ausf&auml;llt.<\/p><p class=\"wp-block-paragraph\">Nachdem Ihr Container vollst&auml;ndig getestet ist, k&ouml;nnen Sie nun Best Practices anwenden, um ihn effizient und produktionsbereit zu halten.<\/p><h2 class=\"wp-block-heading\" id=\"h-what-are-some-best-practices-for-using-node-js-with-docker\">Was sind bew&auml;hrte Vorgehensweisen f&uuml;r die Verwendung von Node.js mit Docker?<\/h2><p class=\"wp-block-paragraph\">Wenn Sie bew&auml;hrte Methoden befolgen, erstellen Sie sichere, effiziente und gut wartbare Docker-Images f&uuml;r Ihre Node.js-Apps. Hier sind einige wichtige Tipps, die Sie anwenden sollten:<\/p><ul class=\"wp-block-list\">\n<li><strong>Verwenden Sie schlanke Basis-Images<\/strong>. Verwenden Sie in der Produktion Alpine- oder Slim-Images statt vollst&auml;ndiger Images. Kleinere Images werden schneller erstellt und bieten eine geringere Angriffsfl&auml;che.<\/li>\n\n\n\n<li><strong>Nur Produktionsabh&auml;ngigkeiten installieren<\/strong>. Verwenden Sie in Ihrer Dockerfile den Befehl <strong>npm ci &ndash;omit=dev<\/strong>. So vermeiden Sie die Installation von Entwicklungsabh&auml;ngigkeiten wie Testbibliotheken, die im endg&uuml;ltigen Image nicht ben&ouml;tigt werden und dazu beitragen, es klein zu halten.<\/li>\n\n\n\n<li><strong>Setzen Sie NODE_ENV=production<\/strong>. Diese Umgebungsvariable signalisiert Bibliotheken wie Express, Optimierungen zu aktivieren, etwa das Caching von View-Templates und die Verringerung des Debug-Overheads.<\/li>\n\n\n\n<li><strong>Bilder klein halten<\/strong>. Verwenden Sie Multi-Stage-Builds, um Build-Werkzeuge von der Laufzeitumgebung zu trennen. F&uuml;gen Sie eine Datei <strong>.dockerignore<\/strong> hinzu, um Protokolle, lokale Module und andere unn&ouml;tige Dateien aus dem Build-Kontext auszuschlie&szlig;en.<\/li>\n\n\n\n<li><strong>Aktualisieren Sie Basis-Images regelm&auml;&szlig;ig<\/strong>. Ziehen Sie regelm&auml;&szlig;ig das neueste Basis-Image und erstellen Sie Ihr App-Image neu, damit Sicherheitsupdates und Leistungsverbesserungen enthalten sind.<\/li>\n\n\n\n<li><strong>Als Nicht-Root-Benutzer ausf&uuml;hren<\/strong>. F&uuml;r mehr Sicherheit sollten Sie Ihre App im Container nicht mit Root-Rechten ausf&uuml;hren. Erstellen Sie stattdessen in Ihrer Dockerfile einen eigenen Benutzer und wechseln Sie zu diesem, bevor Sie die Anwendung ausf&uuml;hren.<\/li>\n\n\n\n<li><strong>Skalieren Sie Ihre App<\/strong>. Verwenden Sie Orchestrierungs-Tools wie <a href=\"\/de\/tutorials\/docker-swarm-erstellen\/\">Docker Swarm<\/a>, um Container f&uuml;r hohe Verf&uuml;gbarkeit &uuml;ber mehrere Server zu verteilen, oder <a href=\"\/de\/tutorials\/docker-stack-bereitstellen\/\">Docker stack<\/a>, um Multi-Container-Anwendungen in der Produktion bereitzustellen.<\/li>\n<\/ul><h2 class=\"wp-block-heading\" id=\"h-key-takeaways-for-using-node-js-with-docker\">Wichtige Erkenntnisse zur Verwendung von Node.js mit Docker<\/h2><p class=\"wp-block-paragraph\">Durch die Kombination von Node.js mit Docker entsteht ein leistungsf&auml;higer Workflow f&uuml;r die Entwicklung und Bereitstellung von Anwendungen, die konsistent, portabel und effizient sind.<\/p><p class=\"wp-block-paragraph\">Sie haben ein Projekt eingerichtet, ein optimiertes Dockerfile mit Multi-Stage-Builds geschrieben und Best Practices angewendet, um einen produktionsreifen Container zu erstellen.<\/p><p class=\"wp-block-paragraph\">Der n&auml;chste Schritt besteht darin, weiter zu experimentieren. Docker Compose integrieren, um Multi-Container-Anwendungen zu verwalten, oder eine Pipeline f&uuml;r Continuous Integration und Deployment (CI\/CD) einrichten, um Ihre Builds zu automatisieren.<\/p><p class=\"wp-block-paragraph\">Sie k&ouml;nnen au&szlig;erdem Umgebungsvariablen und geheime Dateien verwenden, um vertrauliche Daten zu verwalten, einen Reverse-Proxy wie NGINX hinzuf&uuml;gen, um HTTPS zu aktivieren, oder Ihr Image zu Docker Hub pushen, um es &uuml;berall freizugeben und bereitzustellen.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Mit Node.js und Docker k&ouml;nnen Sie schnelle, skalierbare Anwendungen erstellen und sie in sicheren, ressourcenschonenden Containern bereitstellen. Diese Kombination bietet erhebliche Vorteile, darunter Portabilit&auml;t &ndash; sodass Ihre App &uuml;berall auf dieselbe Weise ausgef&uuml;hrt wird &ndash; sowie Konsistenz zwischen Entwicklungs- und Produktionsumgebungen. Wenn Sie Ihre App containerisieren, nutzen Sie Ressourcen effizienter und vereinfachen gleichzeitig den Bereitstellungsprozess. [&#8230;]<\/p>\n<p><a class=\"btn btn-secondary understrap-read-more-link\" href=\"\/de\/tutorials\/node-js-mit-docker-verwenden\/\">Read More&#8230;<\/a><\/p>\n","protected":false},"author":190,"featured_media":12727,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"rank_math_title":"Node.js mit Docker: Container erstellen und ausf\u00fchren","rank_math_description":"Erfahren Sie, wie Sie eine Node.js-Anwendung mit Docker containerisieren, Docker-Images erstellen und Container f\u00fcr die Produktion bereitstellen.","rank_math_focus_keyword":"Node.js mit Docker","footnotes":""},"categories":[25],"tags":[],"class_list":["post-12728","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-vps"],"hreflangs":[{"locale":"en-US","link":"https:\/\/www.hostinger.com\/tutorials\/how-to-use-node-js-with-docker\/","default":1},{"locale":"de-DE","link":"https:\/\/www.hostinger.com\/de\/tutorials\/node-js-mit-docker-verwenden\/","default":0},{"locale":"en-PH","link":"https:\/\/www.hostinger.com\/ph\/tutorials\/how-to-use-node-js-with-docker\/","default":0},{"locale":"en-MY","link":"https:\/\/www.hostinger.com\/my\/tutorials\/how-to-use-node-js-with-docker\/","default":0},{"locale":"en-GB","link":"https:\/\/www.hostinger.com\/uk\/tutorials\/how-to-use-node-js-with-docker\/","default":0},{"locale":"en-IN","link":"https:\/\/www.hostinger.com\/in\/tutorials\/how-to-use-node-js-with-docker\/","default":0},{"locale":"en-CA","link":"https:\/\/www.hostinger.com\/ca\/tutorials\/how-to-use-node-js-with-docker\/","default":0},{"locale":"en-AU","link":"https:\/\/www.hostinger.com\/au\/tutorials\/how-to-use-node-js-with-docker\/","default":0},{"locale":"en-NG","link":"https:\/\/www.hostinger.com\/ng\/tutorials\/how-to-use-node-js-with-docker\/","default":0}],"_links":{"self":[{"href":"https:\/\/www.hostinger.com\/de\/tutorials\/wp-json\/wp\/v2\/posts\/12728","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.hostinger.com\/de\/tutorials\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.hostinger.com\/de\/tutorials\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.hostinger.com\/de\/tutorials\/wp-json\/wp\/v2\/users\/190"}],"replies":[{"embeddable":true,"href":"https:\/\/www.hostinger.com\/de\/tutorials\/wp-json\/wp\/v2\/comments?post=12728"}],"version-history":[{"count":4,"href":"https:\/\/www.hostinger.com\/de\/tutorials\/wp-json\/wp\/v2\/posts\/12728\/revisions"}],"predecessor-version":[{"id":12745,"href":"https:\/\/www.hostinger.com\/de\/tutorials\/wp-json\/wp\/v2\/posts\/12728\/revisions\/12745"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.hostinger.com\/de\/tutorials\/wp-json\/wp\/v2\/media\/12727"}],"wp:attachment":[{"href":"https:\/\/www.hostinger.com\/de\/tutorials\/wp-json\/wp\/v2\/media?parent=12728"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.hostinger.com\/de\/tutorials\/wp-json\/wp\/v2\/categories?post=12728"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.hostinger.com\/de\/tutorials\/wp-json\/wp\/v2\/tags?post=12728"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}