[Docker] CentOS6でMySQLコンテナを作成してみる

お世話になっております。
しゃまとんです。

前回はRedisと連携をやってみたので、今回はMySQLコンテナを作ってみようと思います。
MySQLは試しにAWSのRDSでデフォルトっぽい5.6.27(2016/12/13時点)で作成してみます。

OSは前回と同じでCentOS6を使います。
ちなみに前回の記事はこちら

[Docker] golangとredisのコンテナを繋いでみた

MySQLは公式でもイメージが用意されていますが、Dockerfileを見てもややこしい印象。
で他の方々のを拝見している感じだと

・my.cnf(MySQLの設定ファイル)
・mysql用のスクリプト

を事前に作成するなどして、コンテナ起動させている感じだな〜ということで参考にしつつDockerfileから。

CentOS6では標準でインストールされるMySQLが古いためrpmを取得してMySQL公式のリポジトリを有効にします。
そして、指定のバージョンでyum installします。
もしかしてmakeとかしないと行けないのかと思っていましたが、公式ありがとう。

そして、MySQLの設定ファイルを置き換えて、起動用スクリプトをコピーします。
最後にPORTを設定し、スクリプトを実行するようにします。

my.cnfはでデフォルトで用意されているものにエンコード設定などを少し追加しました。
なので純粋に起動確認するだけなら、置き換えはしなくていいと思います。

そして、起動スクリプトです。起動時にファイルがあるか確認してない場合、初期化を実行させるようにしました。
今回は初期化とユーザー、データベース作成までおこなってみました。
sleepは進捗がわかりやすいようにわざと入れています。

準備が整ったので、実行してみます。
成功するとコンテナが生成されmysqlのプロセスが起動した状態になります。

もう1つターミナルを開いて、中身を覗いてみます。

docker_mysql_check

MySQLが起動してユーザーとデータベースが作成されているのが確認できました。
このコンテナですが、消してしまうとデータが全て消えてしまいます。
データを残して他コンテナで使いたい場合は別でデータ保存部分を用意する必要があるようです。またこの辺もやってみたいと思います。

以上です。
docker-mysql56-centos6

■ 参考
Dockerでmysqlサーバコンテナへ別のコンテナからアクセスする
MySQL 5.6をCentOS 7にyum インストールする手順
dockerで、いい感じでMySQL環境を作る
DockerでMySQLを動かす(気を付けるべきところとかいろいろ)