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

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

このエントリーをはてなブックマークに追加

こんにちは、DBAです。
この記事は Groonga Advent Calendar 2015 の1日目の記事です!

弊社ではMySQLを通した全文検索に Mroonga を利用しており、今までこのブログでも

などなどMroonga関連の記事をいくつか書いてきました。

俺は(主にクラッシュした時に再現を試すためのクリーンな環境を作るために) Docker を愛用していて、そんな話をしていたら流れで Mroonga公式のDockerイメージ をメンテナンスすることになりました。

Docker Hubのタグのページ から確認してもらうのが見やすいかと思いますが、MySQLとMroongaのバージョン(原則、そのバージョンのMroongaがリリースされた時点で対応しているMySQLの最新バージョン)でタグを打っています。

image

ですので、ここから使いたい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してください。お待ちしております :)

https://github.com/mroonga/docker


名無しのエンジニア
httpsサイトにhttpリソースが混在していないかPHP + Selenium WebDriverでチェックする
MroongaのDockerイメージをメンテナンスする、とは