Ich möchte Microservices lokal entwickeln, aber auch mit minimalen Konfigurationsänderungen in die Produktion "pushen". Ich habe alle Microservices lokal in einen docker-compose
gesteckt; Aber ich fange an zu sehen, dass das vielleicht nicht praktisch ist.Docker-Compose pro Microservice in lokalen und Produktionsumgebungen?
Die neue Idee ist, einzelne Docker-komponieren pro Dienst zu haben. Dies bedeutet nicht, dass es mit nur einem Container läuft; Es könnte mehr drin sein (wie ein Datenspeicher hinter usw.).
Von diesem neuen Blickwinkel, schauen wir uns die bekannten einen Blick docker voting app example, die aus 5 Komponenten bestehen:
- (P) Python Webapp, die Sie zwischen zwei Optionen abstimmen lässt
- (R) Redis Warteschlange, die neuen Stimmen sammelt
- (J) Java Arbeiter, die in Stimmen und speichert sie verbraucht ...
- (S) Postgres-Datenbank von einem Volumen Docker gesichert
- (N) Node.js Webapp, die
die Ergebnisse der Abstimmung in Echtzeit zeigt Angenommen, Sie dieses Beispiel schieben wollen in Produktion (so dass nur eine docker-compose
ist keine Option :). Vergessen Sie nicht, dass weitere infrastrukturbezogene Komponenten hinzugefügt werden können (wie Kibana, Prometheus ...). Und wir wollen skalieren können, was wir brauchen; und wir verwenden z.B. Schwarm.
Die Frage ist:
- Wie dieses Beispiel organisieren: in einzelnen
docker-composes
oder viele? - Welche Microservices haben wir hier? Mit anderen Worten, welche Komponenten würden Sie zu einem einzigen
docker-compose
kombinieren? Beispiel: J und S? - Wenn Services nicht in einem Docker-Compose enthalten sind, fügen wir sie zum gleichen Overlay-Netzwerk hinzu, um die Funktion "Schwarm-DNS" zu verwenden?
- und so weiter ...
(Ich brauche keine Details darüber, wie Dinge zu installieren, ist diese Frage über Top-Level-Organisation)