Aby odpowiedzieć na twoje pytanie - jest niemożliwe przy v3 - zobacz sekcję poniżej. v3 nie będzie używane jako następca (również oficjalne oświadczenie dokera), powinno być używane w "przypadkach roju".
Niemniej jednak należy użyć nazwanych woluminów.
Można łączyć je z tomów host-montowania jak ten
docker volume create --name volume1 -o type=none -o device=/home/$USER/projects/01 -o o=bind
Można uprościć ten pomocą długim składni wprowadzone w 3.2: https://docs.docker.com/compose/compose-file/#long-syntax-2 tak można zdefiniować nazwie głośność + Bind on gospodarza w doker-komponować plik przykład:
services:
full-tests:
volumes:
- type: volume
source: ../
target: /opt/project
- type: volume
source: ../../../ext-libs
target: /opt/ext-libs
lub w skrócie jak miałeś
services:
full-tests:
volumes:
- ../:/opt/project
- ../../../ext-libs:/opt/ext-libs
Czego jednak nie można zrobić, umieszczając długą składnię pod definicją "woluminów" najwyższego poziomu, nadając temu woluminowi nazwę i używając go ponownie w sekcji woluminów w usługach - to nie jest możliwe. Aby to zrobić, należy użyć
volumes:
project:
external: true
third-party:
external: true
a następnie za pomocą „objętość doker tworzyć” składni na CLI do stworzenia tych woluminów z opcją wiązania, jak przedstawiono powyżej
ale nigdy nie dostanie tego, co volumes_from robił dla ciebie tutaj
nie ma odpowiednik volumes_from w v3, ponieważ v3 nie jest następcą v2, jej alternatywa - proszę zobaczyć mój komentarz i źródła tutaj https://github.com/rancher/rancher/issues/3316#issuecomment-310889283
Podsumowując - volume_from i volume mają pokrycie w przypadku, gdy volume_from został właśnie użyty w niewłaściwy sposób/w niewłaściwym polu.
a) Jeśli chcesz, aby dane być utrwalone całej uaktualnień stosu (w dół + w górę), wybrać nazwane woluminów - i teraz, jeśli 2+ usługi musi podzielić się tym, po prostu zamontować tej nazwie głośności za pomocą volumes:
.
b) Jeżeli jednak zrobić nie chcą dane utrzymują się na rozbudowę stosu (np z powodu jego kod źródłowy i obraz rzeczywistości obejmuje to uaktualnień) jako w zwykłym stosowaniu + httpd/scenariusz proxy, ty utworzy w tym przypadku wolumin-objętość /var/www
w pliku Dockerfile przy użyciu Volume /var/www
, a następnie użyj volume_from, aby go zamontować w usłudze httpd
.
głównym punktem z b jest, że na rozbudowę stosu, objętość anon zostanie usunięty (`doker-komponować dół usuwa pojemniki Anon, ale nie nazwany z nich), a więc upgrade działa zgodnie z oczekiwaniami, trzeba nowy codebase
Próbuje zrobić to samo z wymienionych tomach daje ogromne zaskoczenie na pierwszej aktualizacji, ponieważ kod jest na nazwie objętości i że będzie nakładka kodzie na „świeżym” image/nowy kontener, w ten sposób uruchomisz starą bazę kodów po aktualizacji.
Kilka wskazówek tutaj: https://github.com/moby/moby/issues/19990 – Borek
proszę napisać swoje rzeczy we właściwy sposób V2, a nie sposobem v1 –
@EugenMayer zaktualizowany. – Borek