Mam dwie aplikacje Dart, które muszę dokować. Te dwie aplikacje używają udostępnionego katalogu źródłowego.
Ponieważ Docker zapobiega dodawaniu plików z folderów spoza katalogu kontekstowego ( project/app1
), nie mogę dodawać plików z ../shared
ani z shared
(dowiązanie symboliczne w środku projects/app1
).
W każdym razie szukam sposobu, aby oszukać Dockera.
Moja uproszczona struktura projektu
- projects
- app1
- Dockerfile
- shared (symlink ../shared)
- otherSource
- app2
- Dockerfile
- shared (symlink ../shared)
- otherSource
- shared
- source
Mógłbym przejść o Dockerfile
jeden poziom wyżej i uruchomić docker build
stamtąd, ale potrzebuję dwóch plików Docker (dla app1 i app2) w tym samym katalogu.
Mój obecny pomysł polegał na tym, że gdybym mógł jakoś ukryć fakt, że projects/app1/shared
jest dowiązaniem symbolicznym, problem ten zostałby rozwiązany. Sprawdziłem, czy mogę udostępniać projects
za pomocą Samby i zamontowałem ją gdzie indziej i skonfigurowałem Sambę, aby traktowała dowiązania symboliczne jak normalne foldery, ale nie znalazłem, czy jest to obsługiwane (nie mam dużego doświadczenia z Sambą i jeszcze jej nie wypróbowałem, tylko trochę szukałem) .
Czy jest jakieś inne narzędzie lub sztuczka, które na to pozwalają?
Wolałbym nie zmieniać struktury katalogów, ponieważ spowodowałoby to inne problemy, a także raczej nie kopiowałbym plików.
Ten problem pojawiał się wielokrotnie w społeczności Docker. Zasadniczo narusza to wymóg
Dockerfile
powtarzalności, jeśli go uruchomisz lub uruchomię. Nie spodziewałbym się więc tej zdolności, jak opisano w tym zgłoszeniu: polecenie Dockerfile ADD nie śledzi dowiązań symbolicznych na hoście # 1676 .Musisz więc wymyślić inne podejście. Jeśli spojrzysz na ten problem: DODAJ, aby obsługiwać dowiązania symboliczne w argumencie # 6094 , nasz przyjaciel z U&L ( @Patrick aka. Phemmer) zapewnia sprytne obejście.
Mówi
fragment strony man tartar
to o dereferencji dowiązań symbolicznych z bieżącego katalogu, a następnie potokowanie ich wszystkich dodocker build -
polecenia.źródło
cp
polecenie, czy możesz wyjaśnić, dlaczego jest lepsze? Myślę też, że rura jest myląca / nadmiernie skomplikowana. Dlaczego nie po prostu umieścić polecenia tar nad poleceniem kompilacji. Chyba dlatego, że wtedy nadpisujesz dowiązanie symboliczne realnym katalogiem./bin/cp ../requirements.txt . && docker build ...
do pliku Makefile, aby zbudować