DockerでMySQLの環境を構築してみる
前々からやってみないと、とは思っていたけど後回しにしていたDockerを時間ができたので少し触ってみました。
Docker for Macの登場によってローカル開発環境の構築に関して言えば少し敷居が低くなったような気もしましたし。
いきなりLAMPの開発環境すべてをDockerで揃えようというのにはまだまだ調査不足ということもあり、まずはMySQLのコンテナを単独で立ち上げてみます。
DockerHubに安心安全公式のMySQLイメージがあるのでこれを使ってみます。
今回はMySQL5.6を構築します。(今の所MySQL5.7の仕事の予定がないので)
まずは以下コマンドでMySQL5.6のイメージを取得してきます。
docker pull mysql:5.6
“:”に続く5.6が「タグ」です。「タグ」によってMySQLのバージョンまで指定して構築できるのはお手軽です。
タグを指定しなければ現時点(2017/01/23)ではMySQLの5.7のイメージが取得されます。
次にMySQL5.6のコンテナを起動します。以下コマンドを実行します。
docker run --name mysql56test -e MYSQL_ROOT_PASSWORD=(ルートユーザーのパスワード) -d mysql:5.6
これでコンテナ名「mysql56test」でMySQL5.6のコンテナが起動しました。”mysql:5.6″とタグをしっかり指定しないと、(おそらく)MySQL5.7のイメージを取得したのち、MySQL5.7のコンテナを起動してしまいます。
docker psコマンドでコンテナの稼働状況を確認してみます。
$ docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES d43289af8586 mysql:5.6 "docker-entrypoint..." 28 minutes ago Up 29 minutes 3306/tcp mysql56test
しかしこれではMySQLクライアントソフト(Sequal Pro)から接続できませんでした。それではあんまりなので、接続できるようにします。docker runコマンドの-pオプションでホストとコンテナとのポートをつなぎます。
docker run --name mysql56test -p 3306:3306 -e MYSQL_ROOT_PASSWORD=(ルートユーザーのパスワード) -d mysql:5.6
再度docker psコマンドでコンテナの稼働状況を確認します。
$ docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 284a79b565bb mysql:5.6 "docker-entrypoint..." 8 seconds ago Up 6 seconds 0.0.0.0:3306->3306/tcp mysql56test
「PORTS」の項目が変わりました。Sequal Proでつないでみます。
接続テストも成功!!
しかしcaracter-set-serverがlatin1・・・これだから洋物は!!
DockerHubのここ含め、これに対応する情報は色々あるので、次回はutf8対応をしてみようと思います。