Docker-Workflow mit mehreren Paketen und freigegebenen Quellen

383
valya

Angenommen, ich möchte Docker für eine App verwenden, die aus zwei Teilen besteht. Diese Teile sind unterschiedlich, aber es gibt einige gemeinsam genutzte Bibliotheken.

Ich habe also zwei Ordner:

part1/ Dockerfile src/ part2/ Dockerfile src/ 

Ich möchte jedoch, dass sie einige Dateien (z. B. Bibliotheken) freigeben, weil DRY. Leider scheint es keine gute Verzeichnisstruktur zu geben, die es mir erlauben würde, das zu tun: Dockerfiles können sich nicht auf die übergeordneten Ordner beziehen, und ich kann sie nicht beide in den obersten Ordner legen, da ich nicht ändern darf der Name der Dockerfile.

Einige dieser Dateien sind im Erstellungsschritt erforderlich, daher kann ich die Option "bind mount a volume" nicht verwenden. docker run- docker runist zu spät.

Ich sehe diese Optionen und mag sie nicht:

  1. Ich kann einen Ordner mit dem Namen hinzufügen shared/und ihn mithilfe eines Hacks in beide App-Ordner einfügen. Zu diesen Hacks gehört, dass sie irgendwie montiert werden müssen (was ärgerlich ist, würde ich jedes Mal tun müssen, und das ist für meine Kollegen, die ich versuche, Docker zu verkaufen) unerklärlich -script, kopiere den Ordner vor dem Build und entferne ihn gleich danach, er macht jedoch den Build-Cache ungültig, auch wenn der freigegebene Ordner nicht geändert wird und anfällig für Fehler ist.)

  2. Ich kann das Projekt in 3 verschiedene Projekte aufteilen und sie mit git-sub-something miteinander verknüpfen. Es ist sehr schwierig, mit dieser Konfiguration zu arbeiten (oder ich weiß nicht, wie das geht).

Ich gehe davon aus, dass meine Situation nicht ungewöhnlich ist, insbesondere mit dem Motto "Anwendungen in mehrere Container entkoppeln". Also gibt es wahrscheinlich sehr schöne Möglichkeiten, damit zu arbeiten. Irgendwelche Hinweise?

5

0 Antworten auf die Frage