Сложна. Нет смысла кастомизирвоать образ, достаточно подмонитровать директорию с script.sql в docker-entrypoint-initdb.d:
volumes:
- ./init:/docker-entrypoint-initdb.d
Если в том скрипте с нуля база данных создаётся, то надо не забыть и пользователя создать и грантов ему дать и переключиться на эту базу с помощью команды
use <db_name>
(где
<db_name>
свежесозданная база данных), ну а дальше собственно список запросов. И да, это всё не мгновенно происходит - надо предусмотреть в приложении проверку, что база полностью поднялась, задержку какую нибудь придумать...
CMD тоже нет смысла использовать - эти флаги можно передать из docker-compose.yml с помощью директивы command
command:
- --character-set-server=utf8mb4
- --collation-server=utf8mb4_unicode_ci