概要
DockerHubにあるMySQLの公式イメージを使ってみた。
※Docker for Mac使用
https://hub.docker.com/_/mysql/
イメージを持ってくる
5.6のイメージを使ってみることにする。
$ docker pull mysql:5.6
ダウンロードを確認
$ docker images
起動する
とりあえず13306ポートでrunしてみる
docker run \ -d \ --name mysql-docker \ -p 13306:3306 \ --env MYSQL_ALLOW_EMPTY_PASSWORD=yes \ mysql:5.6
MYSQL_ALLOW_EMPTY_PASSWORD=yes
としておくことで、パスワード無しで接続できる。
dockerで初期設定っぽいものをパラメータ的に渡すのは環境変数を使うのがセオリーなのかな?
mysqlコマンドで繋いでみる
MySQLはデフォルトポート以外を使う場合、localhostでは接続できないので、IPでつなぐ。
$ mysql -u root -h 127.0.0.1 -P 13306 Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 1 Server version: 5.6.37 MySQL Community Server (GPL)
設定ファイルを使う
自前の設定を使う場合、設定ファイルの配置場所をDocker側にマウントさせる。
たとえば設定ファイルが /my/custom/config-file.cnf
の場合なら --volume /my/custom/config-file.cnf:/etc/mysql/conf.d
を指定する。
volumeオプションは相対パスだとうまく動かなくて、どうやら絶対パスじゃないとダメなようだ。
docker run \ -d \ --name mysql-docker \ -p 13306:3306 \ --env MYSQL_ALLOW_EMPTY_PASSWORD=yes \ --volume /my/custom/config-file.cnf:/etc/mysql/conf.d \ mysql:5.6
mysqlにつないだら show variables
とかで設定ファイルの内容が反映されているか確認できる。
パス系の設定は注意
無邪気に出来合いの設定ファイルを渡すとうまく動かなかったり、コンテナが終了したりする。
ログファイルの場所など、パスが絡む設定はそのままだと使えなそう。
とりあえず必要ならコンテナの中に入って参照すればいいと思うので、渡す設定からは外すことにした。
まとめ
他にも起動時にデータベースを作成することもできたり、初期SQLを流し込んだりもできるみたい。
公式のイメージを使ってやりたいことは一通りできそうなので、とても便利である。
忘れそうなのでGitHubに残しておいた。
GitHub - su-kun1899/mysql: mysql 関連の置き場