Допустим, я хочу использовать Docker для приложения, которое состоит из двух частей. Эти части разные, но у них есть общие библиотеки.
Итак, у меня есть две папки:
part1/
Dockerfile
src/
part2/
Dockerfile
src/
Тем не менее, я хочу, чтобы они поделились некоторыми файлами (например, библиотеками), потому что DRY. К сожалению, нет хорошей структуры каталогов, которая позволила бы мне это сделать: файлы Docker не могут ссылаться на родительские папки, и я не могу поместить их оба в верхнюю папку, потому что мне не разрешено изменять название Dockerfile.
Некоторые из этих файлов требуются на этапе сборки, поэтому я не могу использовать опцию "bind mount a Volume" для docker run
docker run
- запуск docker слишком поздний.
Я вижу эти варианты, и они мне не нравятся:
Я могу добавить папку с именем
shared/
и использовать хак, чтобы поместить ее "в" обе папки моего приложения. Эти хаки включают в себя его монтирование (что раздражает, потребует от меня делать это каждый раз и необъяснимо для моих коллег, которых я пытаюсь продать Docker) или копирование перед сборкой (выполнимо, если я прячу здание в сборку -script, скопировать папку перед сборкой и удалить ее сразу после нее, однако она делает недействительным кеш сборки, даже если общая папка не изменена и подвержена ошибкам)Я могу разделить проект на 3 разных проекта и связать их вместе, используя git-sub-что-то. С этой конфигурацией очень сложно работать (или я не знаю, как это сделать).
Я предполагаю, что моя ситуация не так уж редка, особенно с девизом "разделить приложения на несколько контейнеров". Так что, вероятно, есть очень хорошие способы работать с этим. Есть какие-нибудь подсказки?