vagrant上のdockerのMySQLコンテナの起動に失敗するときの対処法

問題

windows10のvagrant上にdockerのmysqlコンテナを作り、さらにVagrantfileconfig.vm.synced_folderで指定したフォルダーをdocker-compose.ymlのvolumesでマウントしてMySQLのデータを永続化しようとした。

しかし、docker psで確認したところ、mysqlコンテナは起動に失敗していて、再起動を繰り返していた。docker logsでログを見ると、以下のようなエラーが繰り返し出ていた。

2021-02-28T08:22:44.596272Z 0 [ERROR] InnoDB: File ./ib_logfile0: 'aio write' returned OS error 122. Cannot continue operation
2021-02-28T08:22:44.596276Z 0 [ERROR] InnoDB: Cannot continue operation.

エラーメッセージで検索したところ、docker-compos.ymlcommand: --innodb_use_native_aio=0を追加するとよいとの情報が複数見つかった。

stackoverflow.com

qiita.com

しかし、上記オプションを追加してvagrant upからやり直しても、状況は変わらなかった。

解決法

先ほどのオプションを追記した後、docker-compose.yml内で/var/lib/mysqlのマウント元に指定しているホストのフォルダーの中身を空にしたのち、dockerのビルドをする。