5

Допустим, я хочу использовать Docker для приложения, которое состоит из двух частей. Эти части разные, но у них есть общие библиотеки.

Итак, у меня есть две папки:

part1/
    Dockerfile
    src/
part2/
    Dockerfile
    src/

Тем не менее, я хочу, чтобы они поделились некоторыми файлами (например, библиотеками), потому что DRY. К сожалению, нет хорошей структуры каталогов, которая позволила бы мне это сделать: файлы Docker не могут ссылаться на родительские папки, и я не могу поместить их оба в верхнюю папку, потому что мне не разрешено изменять название Dockerfile.

Некоторые из этих файлов требуются на этапе сборки, поэтому я не могу использовать опцию "bind mount a Volume" для docker run docker run - запуск docker слишком поздний.

Я вижу эти варианты, и они мне не нравятся:

  1. Я могу добавить папку с именем shared/ и использовать хак, чтобы поместить ее "в" обе папки моего приложения. Эти хаки включают в себя его монтирование (что раздражает, потребует от меня делать это каждый раз и необъяснимо для моих коллег, которых я пытаюсь продать Docker) или копирование перед сборкой (выполнимо, если я прячу здание в сборку -script, скопировать папку перед сборкой и удалить ее сразу после нее, однако она делает недействительным кеш сборки, даже если общая папка не изменена и подвержена ошибкам)

  2. Я могу разделить проект на 3 разных проекта и связать их вместе, используя git-sub-что-то. С этой конфигурацией очень сложно работать (или я не знаю, как это сделать).

Я предполагаю, что моя ситуация не так уж редка, особенно с девизом "разделить приложения на несколько контейнеров". Так что, вероятно, есть очень хорошие способы работать с этим. Есть какие-нибудь подсказки?

0