mroongaのdocker imageを作る

# やりたいこと
mroongaをインストールしたmysqlのdocker imageを作る。docker自体全然触ったことない状態でやっているので、とりあえず動くとこまでを目指す。rootにパスワードも設定せず、さらにどこからでもアクセス可能など、非常に開放感にあふれた設定なのはいったん目をつぶる。無駄なことをやっている可能性は高め。

# 環境
mac上のvagrantで仮想centos7を動かし、仮想centos7上でmroongaコンテナを稼働させる。

# Dockerfile

```:Dockerfile
FROM centos:7

MAINTAINER hokuma

RUN yum install -y http://packages.groonga.org/centos/groonga-release-1.1.0-1.noarch.rpm
RUN yum install -y http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm
RUN yum makecache
RUN yum install -y mysql-community-server
RUN yum install -y mysql-community-mroonga
RUN mysql_install_db --datadir=/var/lib/mysql --user=mysql
RUN (/usr/bin/mysqld_safe &); sleep 10; echo "grant all privileges on *.* to root@'%';" | mysql -u root
RUN (/usr/bin/mysqld_safe &); sleep 10; mysql -u root < /usr/share/mroonga/install.sql

EXPOSE 3306

CMD ["/usr/bin/mysqld_safe"]
```

# 各行について
最初のほうは割愛。yumで必要なパッケージをインストール。

## 外部からのアクセス許可
```
RUN (/usr/bin/mysqld_safe &); sleep 10; echo "grant all privileges on *.* to root@'%';" | mysql -u root
```
は、macからdocker上のmysqlにアクセスしたかったので、外部からのアクセスをいったん許可している。sleepさせているのは、mysqlサーバの起動を待つため。

## mroongaインストール
```
RUN (/usr/bin/mysqld_safe &); sleep 10; mysql -u root < /usr/share/mroonga/install.sql
```

はmroongaのinstall処理。mroongaインストール時に自動で走るのだけど、その時点ではmysqlサーバは立ち上がってないし、実際に発行されるコマンドは`-p`付きで実行されるので対話的にパスワードを入力しなければならなかったりとbuild時の実行に不向き。なので、`-p`指定なしで最後に実行するようにした。

## mysqlの起動
```
CMD ["/usr/bin/mysqld_safe"]
```

最初、`/usr/bin/mysqld_safe &`と書いていたら、そんなコマンドは存在しないと言われて辛かった。`&`まで含めて一つのファイルと見なされていたっぽく、単純にファイルのみを指定するようにしたらちゃんと起動した。

# 結果
vagrant上で

```
docker run -d --name=hokuma-mroonga -p 3306:3306 hokuma/mroonga:latest
```

macから

```
mysql -h 仮想マシンのIP -u root
mysql> show engines;
+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+
| Engine             | Support | Comment                                                        | Transactions | XA   | Savepoints |
+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+
| FEDERATED          | NO      | Federated MySQL storage engine                                 | NULL         | NULL | NULL       |
| CSV                | YES     | CSV storage engine                                             | NO           | NO   | NO         |
| MyISAM             | YES     | MyISAM storage engine                                          | NO           | NO   | NO         |
| BLACKHOLE          | YES     | /dev/null storage engine (anything you write to it disappears) | NO           | NO   | NO         |
| MRG_MYISAM         | YES     | Collection of identical MyISAM tables                          | NO           | NO   | NO         |
| MEMORY             | YES     | Hash based, stored in memory, useful for temporary tables      | NO           | NO   | NO         |
| Mroonga            | YES     | CJK-ready fulltext search, column store                        | NO           | NO   | NO         |
| PERFORMANCE_SCHEMA | YES     | Performance Schema                                             | NO           | NO   | NO         |
| InnoDB             | DEFAULT | Supports transactions, row-level locking, and foreign keys     | YES          | YES  | YES        |
| ARCHIVE            | YES     | Archive storage engine                                         | NO           | NO   | NO         |
+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+
10 rows in set (0.01 sec)
```

確かにインストールされている。

```
| Mroonga            | YES     | CJK-ready fulltext search, column store                        | NO           | NO   | NO         |
```

# もっとやんなきゃいけないこと
rootのパスワード設定。外部アクセス用のユーザ作成、my.cnfの設定などなど。