Loading...
Wie man Express.js APIs dockerisiert und deployed

Wie man Express.js APIs dockerisiert und deployed

Jonas Scholz - Co-Founder von sliplane.ioJonas Scholz
4 min

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!

let's do this

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?

  1. 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.
  1. Arbeitsverzeichnis:
  • Richtet /app als Arbeitsverzeichnis für die folgenden Anweisungen ein.
  1. Installation der Dependencies:
  • Kopiert package.json und package-lock.json (falls vorhanden) ins Arbeitsverzeichnis.
  • Führt npm install aus, um die Dependencies zu installieren.
  1. Anwendungscode:
  • Kopiert den Rest des Anwendungscodes in den Container.
  1. Port-Freigabe:
  • Exponiert Port 3000, der typischerweise von Express.js Anwendungen verwendet wird.
  1. 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.

Sliplane Service Create

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

Willkommen in der Container-Cloud

Sliplane macht es einfach, Container in der Cloud zu deployen und bei Bedarf zu skalieren. Probier es jetzt aus!