Являются ли перестановки иерархическими в любом случае? Если это так, вы можете создавать промежуточные изображения и наследовать от них. Это будет иметь преимущество в том, что часть «предков» сборок будет предварительно собрана и не потребует дополнительного времени сборки (кроме случаев, когда они изменяются, конечно).
Если нет, вы можете использовать ваш любимый язык сценариев для создания ваших файлов Docker. Неважно, как вы это делаете, важно то, что вы автоматизируете это. Я бы предложил использовать массив, чтобы указать для каждой именованной сборки, какие разделы он должен включать. Поскольку это будет выполняться быстро, вы всегда можете собрать все Dockerfiles и сделать то, что вы делаете, когда создаете образ, так что ваша спецификация для Dockerfile не синхронизируется с самими Dockerfiles.
На самом деле, если вы сделаете это, это может стоить , а не фиксации ваших файлов Docker для контроля версий, так как это на одну вещь меньше из-за синхронизации с вашими сценариями.
Добавление
Относительно этого замечания:
При желании мы хотели бы включить некоторые другие приложения отладки в тот же образ.
Здесь стоит быть осторожным с тем, что составляет проверенное изображение. Если вы добавите дополнительные инструменты отладки в изображение, то:
- если это не планируется развернуть в рабочей среде, то вы можете закончить тестирование на версии своего приложения, которая не находится в рабочей версии. В идеале вы должны использовать одно и то же изображение на протяжении всего процесса разработки.
- для развертывания в рабочей среде стоит подумать о том, можно ли увеличить поверхность атаки.