Рабочий процесс Docker с несколькими пакетами и общими источниками

344
valya

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

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

part1/ Dockerfile src/ part2/ Dockerfile src/ 

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

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

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

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

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

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

5

0 ответов на вопрос

Похожие вопросы