1

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)

Antwort

0

Docker Compose meist unterscheidet Behälter für die Definition, Konfigurieren und verwenden Sie einen einzigen Befehl, um sie verfügbar zu machen (auch für die Sequenzierung). Daher eignet es sich am besten für lokale Entwicklung, Integrationstests und als Teil Ihres kontinuierlichen Integrationsprozesses.

Während nicht auszuschließen, Docker Compose kann in der Produktionsumgebung verwendet werden, denke ich, es wäre ein guter Fall der Verwendung von Kubernetes, die mehr Kontrolle über die Skalierung gibt, Verwaltung mehrerer Container.

Dieser Blog hat einige Beispielszenarien (und viele andere Ressourcen, die hilfreich sein können) ausprobieren

https://renzedevries.wordpress.com/2016/05/31/deploying-a-docker-container-to-kubernetes-on-amazon-aws/comment-page-1/#comment-10