Миграции данных в СУБД и масштабирование изображений - это разные задачи. Следовательно, у каждой из них есть своя специфика.
1. В сценарии миграции на DSL фреймворка обычно описывал добавление колонки, затем
запрос типа SELECT id, email FROM users LIMIT 100 OFFSET :x
. При получении списка компоновка список адресов в HTTP запрос на сторонний сервис и затем обновление колонки (тут есть некоторые особенности).
2. Это похоже не на переход из одного состояния в другое, а на сценарий подготовки при разворачивании веб-приложения. Мы ведь не пишем миграции для компиляции assets (webpack и пр.), так ведь?
То есть, в случае с изображениями мы не меняем состояния приложения. Оно каким было, таким и остается после запуска скрипта масштабирования. Один раз развернули приложение, получив нужные размеры изображения и все, этого достаточно. Когда выйдет новая версия, обновление уже не должно касаться повторного запуска скрипта - достаточно выполнить миграцию данных.