HomebrewからDockerにMySQL環境を移行する

morimorihogeです。ぼちぼち開発現場でもDockerが当たり前に使われている現場が増えてきた印象です。Moby DockかわいいよMoby Dock。 Touch Bar搭載の新型MacBook Pro Retinaに移行したころに、新Macに触る良いテンションの勢いでHomebrew環境のMySQLをDockerに移行してみた時のメモです。 既にQiitaなんかでも同様の事例が多数あると思いますが、備忘録までに。 ※ずいぶん前(2016末)に途中まで下書きして寝かせてしまった内容なので、ここ最近では改善されている部分があるかもしれません(主にパフォーマンス面など) 概要 この手順は意識高いDocker勢で推奨されているData Volume Containerを使った方式ではなくVOLUMEオプションを使った方式です。利点、欠点は以下の通りなのでData Volume Containerが良い人は適宜カスタマイズしてください。 利点 MySQLのDATA_DIRやmy.cnf等の設定ファイルがMac側で直接触れるため、編集・参照しやすい データ類がMacのファイルとして存在するため、バックアップ/リストアしやすい(TimeMachine的にも相性がよさそう) 「うおーなんかよくわからんContainerばっかりになってきたから全部消すか」とかで全containerをdocker rmしてしまってもデータはMac側にあるので安心 欠点 Docker for Macは遅いという話がちょいちょい見受けられるので、速度を求める人にはつらそう。参考: Docker for Macが遅い問題をdocker-syncで解決する VOLUME接続しているのでMySQL containerのデータがDockerに閉じなくなってしまうので、コンテナ至上主義者的には許せない人がいそう 一方、以下の点についてはHomebrew環境と同様に利用可能です。 HomebrewでインストールするMySQLと同様に、localhost:3306でアクセスできる Mac自体を再起動した後も、当然普通に自動起動できる(いちいちdocker runしなくてよい) なお、基本的にここでやってることはDocker HubのMySQLオフィシャルイメージのサイトに書いてあることをやっているだけなので、特にテクい技術は使っていません。あしからず。 旧環境のMySQLをdump 普通にmysqldumpでどうぞ。僕の場合はDBが多数ありすぎたので古いものはアーカイブするために、一度個別のテーブルごとファイルに出しました。 mysqldump -uroot -p”${password}” db_1 > db_1.dump mysqldump -uroot -p”${password}” db_2 > db_2.dump mysqldump -uroot -p”${password}” db_3 > db_3.dump … Continue reading HomebrewからDockerにMySQL環境を移行する