У меня есть два контейнера docker для mysql
и ruby
, а контейнер ruby
зависит от контейнера mysql
.
В моем docker-compose
я смонтировал объем sql дамп в /docker-entrypoint-initdb.d
контейнера mysql
, чтобы он выполнялся при первом запуске контейнера, а база данных заполняется некоторыми данными.
Дамп sql выполняется и данные возвращаются в контейнер БД, как и ожидалось, но проблема в том, что при запуске контейнера ruby
(с рельсами) он выбрасывает migration pending error
. Я понимаю, что это происходит потому, что в таблице schema_migrations
не записано ни одной версии миграции схемы, поскольку данные были намеренно восстановлены из дампа sql.
Но даже запуск docker-compose run <container> rake db:migrate
не будет справка, потому что она выдает ошибку table already exists
, поскольку таблицы уже созданы.
Как синхронизировать c версий миграции схемы rails с фактическими данными в базе данных?
Я также попытался вручную добавить номер последней версии схемы в таблицу schema_migrations
, но все равно возвращает migration pending error
. И я не могу запустить docker-compose run <container> rake db:create db:migrate
до восстановления из sql dump, потому что файлы внутри /docker-entrypoint-initdb.d
контейнера будут выполняться, только если база данных еще не создана.