Ich habe eine Knoten-App, die aus mehreren unabhängigen Modulen besteht, die über AMQP miteinander kommunizieren. Diese App wird von einer Datei index.js gestartet, die jede andere index.js in den verschiedenen Ordnern meines Projekts installiert, die wiederum die eigentlichen Module instanziieren.Konvertiere meine Knoten App in Docker/Kubernetes?
Ich habe über Microservices gelesen und möchte meine Anwendung in Docker Container konvertieren. Ich habe Beispiele gefunden, wie man eine einfache Knoten-App in Docker konvertiert, aber ich möchte meine App so trennen, dass jedes Modul in einem unabhängigen Knoten-Container ist (weil jedes Modul unabhängig ist und nicht von anderen Modulen abhängt) Sie erhalten Arbeit von der Nachrichtenwarteschlange und stellen Ergebnisse in die Nachrichtenwarteschlange ein.
Was ich nicht finden kann, ist Informationen darüber, wie ich meinen Code organisieren und bereitstellen sollte. Soll ich für jedes meiner Module ein anderes Node-Projekt (mit separaten packages.json) haben? Oder sollte ich ein einzelnes Node-Projekt für alle meine Module haben und jedes einzeln bereitstellen?
Nachdem ich mein Projekt organisiert habe, gibt es ein Skript-Tool, das jedes meiner Module in einem eigenen Container generiert (build * und deploy)? Alle Beispiele, die ich bisher gefunden habe, sind "Hallo Welt" -Proben, die nur eine App packen.
Muss ich während der Entwicklung für jede Änderung, die ich testen möchte, neue Container bereitstellen?
*: Build, weil ich ES6 benutze und ich muss Babel verwenden.
Danke. Sollte ich eine separate packages.json für jede Dockerfile haben? Von dem, was ich gelesen habe, verstehe ich, dass die Dockerfile tatsächlich NPM ausführen und die tatsächlichen Pakete herunterladen wird. Wenn ich eine einzelne Paketdatei hätte, hätte ich in jedem meiner Bilder eine Menge aufgeblähtes Bild mit nicht verwendeten Modulen. – hjf
Generell möchten Sie, dass jeder Container so klein wie möglich ist. Für jede App separate node_modules-Verzeichnisse zu haben scheint eine sinnvolle Sache zu sein, die Sie mit separaten package.json-Dateien erreichen können. Das macht auch semantisch Sinn, da jede App ein separates 'Paket' ist. – Nebril