Dockerイメージで誰でも気軽に
Mroonga体験
2017/02/09
yoku0825
Groonga Meatup 2017
\こんばんは/
yoku0825@GMOメディア株式会社
オラクれない-
ポスグれない-
マイエスキューエる-
⽣息域
Twitter: @yoku0825-
Blog: ⽇々の覚書-
MyNA ML: ⽇本MySQLユーザ会-
MySQL Casualʼs Slack: MySQL Casual-
1/22
このトークのゴール
Mroongaを使っている/使ってみたい⼈に
より簡単に検証やテストができる環境として
Dockerイメージを使ってみようかなと思ってもらう
2/22
弊社はMroonga派です
全⽂検索、基本は検索も更新もMroonga
5年以上前(Mroonga 2.x)からのユーザーです-
最近、マスターはInnoDB/スレーブがMroongaの構成や-
検索がgroonga-httpdとの⼆⼑流もあります-
エム-ルンガと発⾳すると、アール-ルンガと区別しやすいで
す
が、別に社内にアール-ルンガ使ってないので迷うことはないです-
エヌ-ルンガ使ってる⼈いたらごめんなさい-
3/22
このトークの中でのDockerの⽴ち位置
Linuxの中に仮想マシンみたいなコンテナを⽴ち上げてくれ
る何か
Vagrantを知ってる⼈ならまさにその⽤途
これ以上突っ込んだ話や本番環境で使う話とかしません
4/22
このトークの中でのDockerの⽴ち位置
Linuxマシン
docker
コンテナ
mysqld
仮想IP
コンテナ
mysqld
仮想IP
application
5/22
DockerイメージでMroonga体験
Dockerをセットアップ
us-eastのAmazon Linux AMI 2016.09.1にて-
sudo yum install docker mysql
sudo service docker start
sudo docker pull groonga/mroonga
sudo docker run -d groonga/mroonga
mysql -h 172.17.0.2 -uroot
SHOW PLUGINS;
6/22
3分でで
きた
7/22
DockerイメージはDocker Hubに
8/22
AUTOMATED BUILD
DockerfileはGitHubのリポジトリーにあります
mroonga/docker: Dockerfile for Mroonga-
Patches welcome!!
9/22
MroongaのDockerイメージを使ってできること
簡単にクリーンなMroongaが⽴ち上げられる
もともとはバグレポートの時のクリーンな再現環境として作り始めた-
すぐに使い始められる
groonga-tokenizer-mecab, groonga-normalizer-mysql込みのオ
ールインワン
-
豊富なバージョンが揃っている
原則、mysql-community-mroongaの全バージョンをサポート-
-v オプションで既存の(ホスト側の)データディレクトリ
ーをマウント可能
データディレクトリーをあらかじめ複製やスナップショットしておけ
ば、何度でも同じデータでテストができる
-
10/22
MroongaのDockerイメージを使ってやらない⽅がいい
こと
本番での運⽤
それを考慮したつくりにはなっていません(セキュリティーとか)-
ガチなベンチマークテスト
Dockerコンテナーであることで何らかの制約を受けるかと思うので、
ゴリッと数字を出すベンチマークには不向きだと思う
-
11/22
ちょっと便利な使い⽅
MySQL + Mroongaのバージョンを指定して起動する
sudo docker run -d groonga/mroonga:mysql5623_mroonga410
12/22
Dockerイメージが対応しているバージョン
MySQL 5.6はMroonga4.10と5.06以降に対応
MySQL 5.7はMroonga 5.09以降に対応
13/22
Dockerイメージが対応しているバージョン
14/22
ちょっと便利な使い⽅
ホストのdatadirをコンテナーの /var/lib/mysql にマウント
する
またはコンテナーの /var/lib/mysql をホストのどこかにマ
ウントする
sudo docker run -d 
-v /path/to/host/dir:/var/lib/mysql 
groonga/mroonga
15/22
ちょっと便利な使い⽅
datadirマウントの応⽤でMroongaイメージに⾃前のmy.cnf
を⾷わせる
sudo docker run -d 
-v /path/to/my/cnf:/etc/my.cnf 
groonga/mroonga
16/22
ちょっと便利な使い⽅
Mroongaイメージにmysqldのオプションを渡す
sudo docker run -d 
groonga/mroonga 
--log-bin=mysql-bin 
--server-id=2 
--log-slave-updates 
--enforce-gtid-consistency=ON 
--gtid-mode=ON
17/22
ワンランク上の使い⽅
Mroongaイメージの上に初期データを投⼊して新たなイメ
ージを作る
vim Dockerfile
---
FROM groonga/mroonga:latest
COPY init.sql /var/lib/mysql-files/init.sql
RUN service mysqld start && 
mysql -uroot < /var/lib/mysql-files/init.sql && 
service mysqld stop
RUN rm /var/lib/mysql/groonga.log /var/lib/mysql/auto.cnf
---
sudo docker build -t myimage .
sudo docker run -d myimage
18/22
オススメの使い⽅
ちょっとしたテスト環境に
ウインドーズ派なので、VirtualBoxの中にCentOS 7.2のVMを飼って
その中でdockerしていますがその程度の⽤途なら問題なく
-
個⼈的にユニットテストととても相性が良い-
他のメンバーとテスト環境を共有できる
物理的な意味での共有ではなく、全員が(簡単な)同じ⽅法で同じコ
ンテナーを起動できる
-
Dockerを使うとっかかりに
いきなり新しい技術だと思うとコスト⾼く感じるけれど、⾒知ったソ
フトウェアの⼊ったコンテナーからなら気軽にいじれる
-
OSSに貢献する
新しいバージョンをサポートするDockerfileを書いてPull-Reqするだ
けであなたもOSSのコントリビューターに︕
-
19/22
Examples of Suggestions and Contributions
レプリケーション構成を試したいから、binlogとserver̲id
を振ったmy.cnfにするとか
groonga-httpdとの⼆⼑流を試したいからgroonga-httpdも
⼀緒に⼊れるとか
今のところDDLしかテストしてないけどDMLもテストする
とか
おや、そういえば今⽇は⾁の⽇で、Mroongaのバージョン
アップがあったんじゃなかったっけ…︖
20/22
このトークのゴール
Mroongaを使っている/使ってみたい⼈が
より簡単に検証やテストができる環境として
Dockerイメージを使ってみようかと思ってもらえました
か︖
21/22
Thank
you!!
22/22

Dockerイメージで誰でも気軽にMroonga体験