
Wie man Express.js APIs dockerisiert und deployed

Deploye Express.js Apps schnell mit Docker - nutze Dockerfile und Sliplane für reibungslose containerisierte Deployments und effizientes Anwendungsmanagement.
Falls du nur zum Kopieren und Einfügen hier bist, hier ist das fertige Dockerfile, das ein Image für deine Express.js App erstellt:
FROM node:22.10.0-alpine.3.19
LABEL maintainer="[email protected]"
WORKDIR /app
COPY package-lock.json package.json ./
RUN npm install
COPY . .
EXPOSE 3000
CMD ["node", "index.js"]
Und hier ist die .dockerignore Datei, die du verwenden solltest:
node_modules
npm-debug.log
Um das Image zu bauen und auszuführen, nutze diese Befehle:
docker build -t express-app .
docker run -p 3000:3000 express-app
Nicht nur zum Kopieren und Einfügen hier? Dann lass uns durchgehen, was im Dockerfile passiert!
Die Vorbereitung
Für dieses Tutorial gehe ich davon aus, dass du bereits ein Express.js Projekt eingerichtet hast. Express.js ist ein minimales und flexibles Node.js Web-Anwendungs-Framework, das robuste Features für Web- und Mobile-Anwendungen bietet. Falls du ein anderes Setup hast, musst du das Dockerfile eventuell anpassen.
Normalerweise würdest du lokal npm install
und dann node index.js
ausführen. Für das Deployment werden wir einen ähnlichen Ansatz verwenden, aber innerhalb eines Docker Containers.
Lass uns die Details des Dockerfiles durchgehen.
Das Dockerfile
FROM node:22.10.0-alpine.3.19
LABEL maintainer="[email protected]"
WORKDIR /app
COPY package-lock.json package.json ./
RUN npm install
COPY . .
EXPOSE 3000
CMD ["node", "index.js"]
Was passiert hier eigentlich?
- Basis-Image:
- Verwendet Node.js 22.10.0 auf Alpine 3.19, was ein leichtgewichtiges Basis-Image bietet.
- Die
LABEL
-Anweisung fügt Metadaten zum Image hinzu.
- Arbeitsverzeichnis:
- Richtet
/app
als Arbeitsverzeichnis für die folgenden Anweisungen ein.
- Installation der Dependencies:
- Kopiert
package.json
undpackage-lock.json
(falls vorhanden) ins Arbeitsverzeichnis. - Führt
npm install
aus, um die Dependencies zu installieren.
- Anwendungscode:
- Kopiert den Rest des Anwendungscodes in den Container.
- Port-Freigabe:
- Exponiert Port 3000, der typischerweise von Express.js Anwendungen verwendet wird.
- Start-Befehl:
- Gibt den Befehl an, um die Anwendung mit
node index.js
zu starten.
Dieser Ansatz ist einfacher als der mehrstufige Build, den wir für Astro verwendet haben, da Express.js Anwendungen typischerweise keinen separaten Build-Schritt benötigen.
Vergiss nicht, die .dockerignore
Datei hinzuzufügen, um den node_modules
Ordner und npm Debug-Logs zu ignorieren. Das beschleunigt den Build-Prozess und reduziert die Größe des Images.
Deployment
Du kannst diesen Docker Container auf jedem Cloud-Anbieter deployen, der Docker unterstützt. Du könntest zum Beispiel Plattformen wie Heroku, DigitalOcean oder AWS ECS nutzen. Da ich Mitgründer von Sliplane bin, zeige ich dir, wie du es dort deployen kannst.
Nach der Anmeldung kannst du einen neuen Service erstellen, indem du dein Github Repository auswählst. Behalte dann einfach die Standardeinstellungen bei und klicke auf Deployment.
Nach dem Deployment wird deine Express.js App unter einer Subdomain von sliplane.app verfügbar sein, normalerweise ist das einfach dein Service-Name.
Du kannst auch die Logs deiner App sehen, Metriken wie CPU- und Speichernutzung einsehen, persistenten Speicher hinzufügen und vieles mehr. Wann immer du in dein Repository pushst, wird Sliplane deine App automatisch deployen.
Wenn du Sliplane ausprobieren möchtest, sind die ersten 2 Tage kostenlos! Probier es aus und lass mich wissen, was du davon hältst :)
{% cta https://sliplane.io?utm_source=dockerize-express %} Deploye ExpressJS in 2 Minuten 🚀 {% endcta %}
Nächste Schritte
Gibt es noch etwas, das du wissen möchtest? Brauchst du Hilfe beim Dockerisieren deiner Express.js App? Brauchst du Hilfe beim Deployen auf einer bestimmten Plattform? Melde dich gerne! Du findest mich auf X oder kommentiere einfach hier im Blog.
Bis dann,
Jonas