Я использую рабочий процесс докера для генерации некоторых файлов на основе заданного спецификационного файла с использованием Makefile (он генерирует клиента в соответствии со спецификацией OpenAPI):
SWAGGER ?= ${PWD}/swagger.yaml
GENERATOR ?= openapitools/openapi-generator-cli\:latest
generated: Makefile ${SWAGGER}
docker run --rm --user $$(id -u):$$(id -g) \
-v ${PWD}:/output -v ${SWAGGER}:/input/swagger.yaml \
${GENERATOR} \
generate -g python -i /input/swagger.yaml -o /output/generated \
это работает нормально, и восстановит, если я изменю входной файл SPEC.
Но он не перестраивается при изменении образа докера.
Допустим, я docker build
изображение снова с тем же name:tag
, но с другим кодом внутри, или я используюдругая помеченная версия исходного изображения, что угодно.Это отчасти ожидаемо, потому что Makefile не знает содержимого образа докера или даты его модификации.Как я могу заставить Makefile понимать зависимость от образа докера?
- Я пытался
docker inspect
изображение, чтобы получить дату создания, но я не знаю, как сделать make
понимать это как зависимость (если дата создания новее, чем выходной каталог, затем перестроить) - Я не могу просто добавить зависимость от кода внутри образа докера, потому что образ докера может даже не бытьбыли созданы из локально доступных файлов.
make
, возможно, не является инструментом для такого рода вещей, возможно, есть что-то еще, что я мог бы использовать, который понимает зависимость образа докера.