dockerでmysqlの永続化に大苦戦

曇り朝はいつも通りマックへ。 今読んでいる「奔る男」という、実話をもとにしたフィクション作品、マラソンランナーの金栗四三をテーマにした小説を読んでいる。 これは昨年かな、NHKドラマの「いだてん」でも取り上げられた人らしい。 名前は知っているが、具体的な功績は知らないのと、Wikipediaもあるのだけど、読んでしまうと本のネタバレになってしまいそうなので、まだ見ていない。 ほぼ読み終えたので、次で読み終わりそうだな。 朝マックの習慣も復活したし、また本を読んでいきたい。

Dockerでの開発環境構築は、だいぶ出来上がった。 nginx, php, mysqlを入れて、nginx, phpに関してはvolumesを指定して、ローカルのフォルダをマウントしてプログラムを実行している感じ。
docker-compose downをすると、コンテナ内のデータは全て削除されるので、mysqlのデータを外部に出さないといけないのだけど、ここでハマりにハマりまくった。
コンテナ内の/var/lib/mysqlを、ローカルのフォルダにするとmysqlの起動に失敗する。 何をどうやっても解決することが出来なかった。
ググった結果は「–innodb-use-native-aio=0」をつけたり、データフォルダを/var/lib/mysql以外にして、マウントする場所を変えるとか、docker volume createで作ったボリュームをアタッチするとか……
自分の環境はWindows10 Home+Docker Toolboxなのだけど、どうやっても解決できず途方に暮れていた……

さらにググり続けた結果、つい先週、Windows10 Proで使えるDocker DesktopがHome対応になったという記事を見て、それを試してみることにする。
試すためにはWindows10の19018以上にしなくてはならないため、Windows Insider Programに参加し、リリース前のWindowsを入れることになった。 それの参加と最新版を入れるのに1時間ちょい……
ようやく、Docker Desktopをインストールすることが出来たが、これ、使い始めるのが先週より前だったら、解決できずにDockerfileで起動時に指定したSQLをインポートするとか、そんな変な処理をしないといけなくなりそうだったな。
で、Docker Desktopにして、作成してあるdocker-compose.ymlを実行すると、何のエラーもなく、すんなりとmysqlのデータを永続化することができた……
あれは環境が問題だったんだな……

とりあえず、仕事用のパソコンではほぼ完成したが、もう1台のデスクトップにも同じ環境いれたいので、そちらも作業しなくては。 そちらのマシンはWindows10 Proなのですんなりいくといいな。