Andockfenster und symlinks
Habe ich ein repo wie folgt eingerichtet:
/config
config.json
/worker-a
Dockerfile
<symlink to config.json>
/code
/worker-b
Dockerfile
<symlink to config.json>
/code
Allerdings ist der Aufbau der Bilder schlägt fehl, da die Andockfenster können nicht mit den symlinks. Ich sollte erwähnen, mein Projekt ist weit komplizierter als diese, also die Umstrukturierung der Verzeichnisse ist nicht eine gute option. Wie kann ich mit dieser situation umgehen?
InformationsquelleAutor der Frage Chris B. | 2016-09-07
Du musst angemeldet sein, um einen Kommentar abzugeben.
Andockfenster nicht unterstützt wird ein Symlink auf Dateien außerhalb der build-Kontext.
Einige verschiedene Methoden für die Verwendung einer freigegebenen Datei in einem container.
Teilen Sie ein Basis-image
Erstellen Sie eine
Dockerfile
für die Basisworker-config
Bild, beinhaltet der freigegebene config/files.Bauen und tag das Bild als
worker-config
Quelle der Basis
worker-config
Bild für alle ArbeitnehmerDockerfile
sBuild-Skript
Verwenden Sie ein Skript, um die push-common config zu jeder Ihrer Arbeiter Container.
./build worker-n
Erstellen von URL -
Ziehen Sie die config aus eine gemeinsame URL für alle
worker-n
baut.Erhöhen, den Umfang der image-build-Kontext
Gehören die symlink-Ziel-Dateien in den build-Kontext durch den Aufbau von einem übergeordneten Verzeichnis, das sowohl die freigegebenen Dateien und bestimmte container-Dateien.
Alle Quell-Pfade, die Sie als Verweis in einem
Dockerfile
muss auch ändern, um mit den neuen build-Kontext:wird
Mit dieser Methode machen kann alle bauen Kontexten groß, wenn Sie haben eine große build-Kontext, wie Sie alle werden gemeinsam genutzt. Es kann verlangsamen baut, insbesondere in den abgelegenen Docker build-Server.
Mount ein config-Verzeichnis von einem benannten volume
Bände wie dieser nur funktionieren, Verzeichnisse, Sie können Sie also nicht eine Datei angeben, wie Sie konnten bei der Montage einer Datei vom host zum container.
Mount config-Verzeichnis vom Daten-container
Wieder, nur Verzeichnisse, da es im Grunde das gleiche wie oben. Dadurch wird automatisch kopieren Sie die Dateien aus dem Ziel-Verzeichnis in das neu erstellte freigegebene Volumen aber.
Mount config-Datei von host
InformationsquelleAutor der Antwort Matt
Den
docker build
CLI-Befehl sendet das angegebene Verzeichnis (in der Regel.
) als das "bauen im Kontext", um die Docker-Engine (daemon). Anstatt der Angabe der build-Kontext als/worker-a
geben Sie die build-Kontext als root-Verzeichnis, und verwenden Sie die-f
argument geben Sie den Pfad zu derDockerfile
in einem der untergeordneten Verzeichnisse.Müssen Sie überarbeiten Ihre Dockerfiles leicht, zu zeigen, Sie zu
../config/config.json
aber das ist ziemlich trivial zu lösen.Überprüfen Sie auch diese Frage/Antwort, die ich denke, dass Adressen, die genau das gleiche problem, die Sie erleben.
Wie, um Dateien außerhalb von Docker-build-Kontext?
Hoffe, das hilft! Cheers
InformationsquelleAutor der Antwort Trevor Sullivan
Alternative Lösung ist ein upgrade für alle Ihre soft-links in hard-links.
InformationsquelleAutor der Antwort Benjamin Pastel