2017-07-25 3 views
1

Ich möchte ein Docker-Image erstellen, das NodeJs und Java Runtime verwendet.Docker Image mit Mixin von Base Images

Es ist möglich, separate Docker-Dateien zu finden, eine für jede Basis.

Wie kann ich zwei Basen verwenden, um ein neues Bild zu erstellen?

In diesem Fall werde ich eine Angular App und eine Spring App im selben Bild ausführen.

Gibt es Tipps, wie Sie ein einzelnes Bild mit solchen Anforderungen erstellen können? Macht das Sinn?

+2

Können Sie nicht drei Container fahren? Knoten, Java und die generierte eckige App? Wenn Sie anfangen, Dienste in einem Container zusammen zu pressen, ist normalerweise mit der Architektur etwas nicht in Ordnung. Fragen Sie sich, ob es möglich ist, Ihre App zu skalieren, indem Sie mehrere Instanzen des Containers ausführen. – Grimmy

+0

Sehr guter Punkt, ich bin in der Tat trennen die beiden ... –

Antwort

2

Wenn das in Ihrem Fall sinnvoll ist, ist das von außen kaum zu beurteilen. Im Allgemeinen sollte ein Bild eine Sache tun, insbesondere eine App. Scheint so, als mischst du zwei Dinge in einem Container. Wenn Sie dies wirklich tun möchten, würde ich das Bild "schwieriger zu installieren" auswählen und es als Basisbild auswählen (scheint das Spring-Bild zu sein). Dann würde ich die Pakete für node.js hinzufügen, die nur ein paar Zeilen Code sein sollten. Da die meisten Docker-Dateien öffentlich sind, können Sie die Bilder nachschlagen und ein eigenes Bild für beide Apps erstellen.

Aber im Allgemeinen klingt das so, als ob du wirklich zwei Bilder brauchst, eines für das Angular-Zeug, eines für das Spring-Zeug. Sie können diese Bilder dann mit docker-compose oder manuell erstellen, indem Sie sie bei Bedarf verknüpfen.

+0

Klingt gut! Ich stimme dir zu, werde verschiedene Bilder haben. Wenn ich den Docker-Compose verwende, erstellt er neue Bilder oder dient er nur der Orchestrierung von Containern? –

+0

@FilipeMiranda Sie können die Bilder erweitern, indem Sie die Eigenschaft 'build' im Service verwenden. Die Alternative besteht darin, ein vordefiniertes Bild mit "image" zu referenzieren (üblich, wenn Build-Systeme stattdessen die Bilder erstellen). – Grimmy

+0

docker-compose orchestriert und verknüpft die Container Ihrer Bilder. Es erstellt automatisch ein Netzwerk Ihrer Container, wenn Sie sie verknüpfen und Volumes mounten, wenn Sie dies möchten. Es lohnt sich, es auszuprobieren, ich benutze es in fast allen meinen Projekten. 'build' überschreibt den 'CMD'-Teil Ihrer Dockerfile, das ist es. Mit 'image' können Sie Ihr Basisbild in der Komposition definieren, das eines Ihrer beiden Bilder sein kann. Dafür gibt es viele Beispiele im Internet. – n2o

Verwandte Themen