MySQLで日本語全文検索ができるMroongaのDockerリポジトリーをメンテナンスしています

こんにちは、DBAです。
この記事は Groonga Advent Calendar 2015 の1日目の記事です!
弊社ではMySQLを通した全文検索に Mroonga を利用しており、今までこのブログでも
- mroongaをXtraDB Clusterで冗長化できそうなメモ | GMOメディア エンジニアブログ
- Tritonn(MySQL 5.0)からMroonga(MySQL 5.6)に割とさっくりデータを移行する | GMOメディア エンジニアブログ
-
Mroonga 3.11に追加されるDATETIME型のORDER BY最適化 | GMOメディア エンジニアブログ
-
ConoHa presents - Groonga “How-To” Talksでバックアップについてしゃべった | GMOメディア エンジニアブログ
などなどMroonga関連の記事をいくつか書いてきました。
俺は(主にクラッシュした時に再現を試すためのクリーンな環境を作るために) Docker を愛用していて、そんな話をしていたら流れで Mroonga公式のDockerイメージ をメンテナンスすることになりました。
Docker Hubのタグのページ から確認してもらうのが見やすいかと思いますが、MySQLとMroongaのバージョン(原則、そのバージョンのMroongaがリリースされた時点で対応しているMySQLの最新バージョン)でタグを打っています。

ですので、ここから使いたいMroongaのバージョンを選ぶと何となく試せる環境が簡単に手に入るわけです。
例えば、MySQL 5.7 + Mroonga 5.09の組み合わせを試したい場合、
$ time sudo docker run -d groonga/mroonga:mysql579_mroonga509 Unable to find image 'groonga/mroonga:mysql579_mroonga509' locally mysql579_mroonga509: Pulling from groonga/mroonga .. Digest: sha256:b7c5cbfdf292565b6c18aaca1142a22f28676923939bac5d775e9f5a957f6c1c
Status: Downloaded newer image for groonga/mroonga:mysql579_mroonga509
e9ff2801c6f823990ed8b1b74124472abd2ec9c475eaf30c6773efc9ef3493e4real 0m58.928s
user 0m0.204s
sys 0m0.132s
おー、思ったより速い。試したのはConoHaの一番お安いVMなので、大概どこの環境でも思い立ってから1分かそこいらでMroongaの最新版が試せそうです。
Docker Hubのページにも書いてありますが、アカウントはroot@’%’がパスワードなしで設定されていますので、インターネットに接しているところで-pや-Pでポートを公開するのはやめておいてください。
あとはホストからコンテナにアクセスするためにIPアドレスを確認して、
$ sudo docker ps | grep mroonga e9ff2801c6f8 groonga/mroonga:mysql579_mroonga509 "/bin/sh -c '/usr/sb 4 minutes ago Up 4 minutes 3306/tcp focused_feynman $ sudo docker inspect -f "{{.NetworkSettings.IPAddress}}" e9ff2801c6f8 172.17.0.1 $ mysql -h 172.17.0.1 -uroot mysql> SHOW PLUGINS; .. | Mroonga | ACTIVE | STORAGE ENGINE | ha_mroonga.so | GPL | .. 46 rows in set (0.02 sec)
無事、インストールまでされていることが確認できました。TokenMecabも使える状態になっている(つもり)ので、テストにはもってこいかなと思っていたりいなかったり。
yumでインストールできるmysql57-community-mroongaに比べて、skip-validate-passwordしてあるのとcharacter-set-server= utf8mb4してあるのがちょっと違うところです。
今のところdatadirをホスト側からマウントしようとするとこのコンテナは動かない(というか、セットアップ内容が飛ぶので動くけどMroongaも入っていないし接続もできない)のですが、そのうちなんとかしたいと思っています。
Mroonga本体にコントリビュートは敷居が高いけど、Dockerfileなら何とかなる…という方は是非PRしてください。お待ちしております :)