Äquivalent volumes_from in Docker Compose v3
Gibt es scheinbar ähnliche Fragen hier ( docker-verfassen volumes_from gleichwertig mit version 3 , Wie ersetzen volumes_from im Andockfenster-composer v3), aber ich glaube nicht, dass Sie die Frage beantworten (oder zumindest ich verstehe nicht, wie die Antworten, die das problem lösen). Lassen Sie mich versuchen, wieder zu Fragen, sehr speziell.
Habe ich diese v2-Andockfenster-Komponieren.yml:
version: '2'
services:
full-tests:
volumes:
- ..:/opt/project
- ../../../ext-libs:/opt/ext-libs
- ./third-mapping:/opt/third
unit-tests:
volumes_from: full-tests
Der Punkt ist, dass der Satz von volumes wird einmal definiert und kann ich problemlos wiederverwenden mit volumes_from
.
Wie würden Sie diese umschreiben in v3?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ihre Frage zu beantworten - es ist unmöglich mit v3 - siehe den Abschnitt unten. v3 wird nicht als Nachfolger ( auch eine offizielle Stellungnahme von docker ) verwendet werden soll, im "Schwarm Fällen".
dennoch, was Sie tun sollten, ist die Verwendung von benannten Mengen.
Kombinieren Sie es mit host-mount-Bände wie dieser
Vereinfachen Sie diese mit Hilfe der lang-syntax eingeführt, die in 3.2: https://docs.docker.com/compose/compose-file/#long-syntax-2 so können Sie festlegen, das angegebene volume + - Bindung auf dem host im Andockfenster-compose-Datei
Beispiel:
oder kurz Sie hatte
Was Sie nicht tun können, obwohl, indem die lang-syntax unter dem top-level "volumes" definition zu geben, dass die Band einen Namen und wiederverwendet es in den Volumen-Abschnitt in der Dienste - das ist nicht möglich. Dies zu tun, verwenden Sie eine
Verwenden und dann die "Andockfenster" volume erstellen" syntax auf der Kommandozeile erstellen, diese Bände mit bind-option, wie oben skizziert
aber man wird nie das bekommen, was volumes_from war für Sie tut hier
Gibt es keine Entsprechung von volumes_from in v3, da-v3 ist nicht der Nachfolger des v2 ist eine alternative - bitte Lesen Sie meinen Kommentar und die Quellen hier https://github.com/rancher/rancher/issues/3316#issuecomment-310889283
Um es zusammenzufassen - volumes_from und Volumen hat eine überschneidung in dem Fall volumes_from war nur der falsche Weg /in das falsche Feld.
a) Wenn Sie wünschen, dass Daten gespeichert werden über stack-upgrades ( unten + oben ), wählen Sie benannte Mengen - und jetzt, wenn 2+ Dienstleistungen muss diesen Anteil, montieren Sie diese benannte Volumen über
volumes:
.b) Wenn Sie zwar, tun nicht wollen, dass die Daten weiterhin über stack-upgrades ( z.B. weil der Quellcode und das Bild eigentlich auch upgrades dieser ) als in einer üblichen Anwendung + httpd/proxy-Szenario verwenden, erstellen Sie einen anon-Volumen für diesen z.B.
/var/www
im Dockerfile mitVolume /var/www
und verwenden Sie dann volumes_from, um es einzuhängen in diehttpd
service.den wichtigsten Punkt mit b ist, dass auf stack-Aktualisierungen, die anon-volume entfernt werden ( `Andockfenster-Komponieren nach unten entfernt anon-Container, aber nicht benannt sind ) und damit das upgrade funktioniert wie erwartet, haben Sie eine neue Codebasis
Versuchen, das gleiche zu tun mit benannten Mengen wird Ihnen eine riesige überraschung auf die erste Aktualisierung, da sich der code auf einem benannten volume und das wird overlay die codebase auf das "frische" image /neuer container, so laufen Sie auf der alten Codebasis nach dem upgrade.
device
mapping? Da gibt es noch immer überschneidungen zwischen meinen zwei Diensten, aber vielleicht gibt es einen Grund, warum die v3 Kräfte in dieser Vervielfältigung auf mich, ich bin mir nicht sicher.device
mapping? Ich sehe es nicht dokumentiert, die in der offiziellen Dokumentation und es wäre am besten zu sehen an einem konkreten Beispiel, wie eine Antwort auf die Frage.Könnten Sie Erweiterung Felder zu halten, den code kurz, aber es ist nicht ganz das gleiche wie
volumes_from
. Zum Beispiel:Bekam ich Andockfenster-Komponieren version 3 arbeiten mit unison. Im Grunde ersetzen mussten "volumes_from" und erstellen Sie einen globalen "volumes" - Erklärung.