3

Ich habe Schwierigkeiten, herauszufinden, wie Sie mehrere NodeJs Dienste auf Google App Engine flexibel bereitstellen.Multiple NodeJS Services/Module auf Google App Engine Flexible Umgebung

Ich verwende mehrere Nodejs-Klassen mit Firebase-Warteschlange, um meine Aufgaben zu verarbeiten. Momentan benutze ich meine package.json, um das Starten von allem auf einmal auszulösen. Dies ist jedoch problematisch geworden. Ich möchte in der Lage sein, einen Wechsel zu einem bestimmten Dienst/Skript durchzuführen, ohne jedes zweite Skript zu beenden.

Mein package.json sieht derzeit so etwas wie folgt aus:

"scripts": { 
    "task1": "node ./src/task1.js", 
    "task2": "node ./src/task2.js", 
    "start": "npm-run-all -p task1 task2" 
} 

ich verschiedene .yaml Dateien mit bin, um zu bestimmen, welche bauen Variante I (Debug oder Release) drücken wollen, aber ich finde es schwer zu Stellen Sie jede Aufgabe einzeln bereit. Ich habe eine Dokumentation gefunden, wie man das in Python macht, aber nichts auf Nodejs. Hat jemand irgendwelche Vorschläge?

+1

Ich höre Sie, ich habe zu diesem Thema seit einer Weile, jetzt versucht, eine Möglichkeit zum Senden von Gerät-zu-Gerät-Benachrichtigung zu finden; sagen Sie, wenn eine neue Nachricht eintrifft. Ich kann Ihnen keine Hilfe anbieten, da ich versuche herauszufinden, wie Sie die Firebase-Warteschlange in der App Engine bereitstellen und sie zum Laufen bringen. Ich würde es schätzen, wenn es einen Hinweis oder eine Anleitung gäbe, die Sie dafür verwenden könnten. Sorry wieder für nicht zu helfen .. – TheeBen

+0

@TheeBen Erstellen Sie eine my-queue-processer.js für jede Art von Warteschlange Aufgabe, folgen Firebase-Warteschlangen Anleitungen für die Einrichtung, dann verwenden Sie meine Antwort unten in einzelne Dienste zu trennen und –

+0

bereitstellen Danke, ich habe die Firebase-Warteschlange eingerichtet. Ich habe mich nur gefragt, ob ich mehrere davon haben könnte und ich war mir ziemlich sicher, dass es einen Weg geben sollte, sie zu kombinieren. Ich versuche, den optimierten Weg zu finden, um die Kosten auf Google App-Engine zu reduzieren – TheeBen

Antwort

4

(Beantwortung meiner Frage, großen Dank an Justin für die Unterstützung)

Ich war dynamisch speziell mit Fragen das Skript zu ändern in meinem package.json zu starten. Ich fand die package.json können mit Umgebungsvariablen zugreifen '$'

package.json:

"scripts": { 
    "start": "node $SCRIPT_TO_RUN" 
} 

myService.yaml

runtime: nodejs 
vm: true 
api_version: 1 
instance_class: B4 
manual_scaling: 
    instances: 1 
service: cart-monitor-dev 

env_variables: 
    SCRIPT_TO_RUN: './src/mytask.js' 

Dann bereitstellen Verwenden:

gcloud app deploy myService.yaml 
+0

Dies ist genau das, was ich gesucht habe! Die Dokumentation spricht darüber, wie großartig die Microservices-Architektur ist, erklärt aber nicht, wie Sie verschiedene Dienste im selben Projekt ausführen. – Aron

+0

Kann es nicht funktionieren lassen .. –

4

Aus genau diesem Grund gibt es App Engine-Dienste :) Sie können für jeden Dienst, den Sie bereitstellen möchten, eine {serviceName} .yaml erstellen. Dann rufen Sie gcloud app deploy service.yaml für jeden einzelnen an. Dadurch werden mehrere Dienste in derselben App erstellt. Ein Beispiel finden:

https://github.com/JustinBeckwith/cloudcats

hoffe, das hilft!

+0

Dank Justin, ich bin dabei, um festzustellen, ob ich Produktion oder Entwicklung Builds bereitstellen. Es sind die Standard "scripts": {"start": "scripts to run ..."} in package.json, die ich dynamisch definieren muss. Ich kann nicht herausfinden, wie man das Yaml benutzt. Irgendwelche Tipps? Ich habe mir Ihren Repo angeschaut, aber es scheint auch nur einen einzigen Dienst zu haben. Schätzen Sie die Hilfe –

Verwandte Themen