У меня несколько сложный проект - около десятка микросервисов, немного больше библиотек (общие объекты или stati c), некоторые stati c папки с html ресурсами. В проекте есть компоненты C ++ и Python. В конечном итоге проект поставляется в виде изображений Docker, которые передаются на docker хаб как часть процесса сборки.
Я использую cmake, чтобы сделать все это.
Интересно, разработало ли сообщество идиоматическую c стратегию для создания изображений. Что касается make-файла, я делаю что-то вроде:
main_executable: a.cpp b.cpp
gcc ...
docker_image: main_executable Dockerfile ... other stuff that gets into the containers
docker build --tag my_image --file Dockerfile .
main_executable - это реальный файл, и проверка зависимостей работает отлично. Однако docker_image - это фальшивая цель. Это представляет docker изображение где-то на docker земле. Поскольку фальшивая цель всегда устарела, сборка docker всегда выполняется, даже если изменения в исходном коде не влияют на соответствующий исполняемый файл. Умножение на десятки изображений, это очень много времени, которое я хотел бы сохранить.
В идеале, я бы хотел сказать make, чтобы сравнить дату изображения docker (возможно, с 'docker image inspect ') с зависимостями.
Я буду удивлен, если я первый человек с этой проблемой. Какова ваша стратегия? Я доволен cmake, но знаком с кучей других (gradle, Scons, maven) и переключился бы при необходимости.