はじめに
Dockerを使って開発環境用のmysqlを立てることにした。
インフラ系が苦手で少し苦労したので、構築から接続までの流れをメモに残しておく。
事前準備
- docker for macのインストール (https://docs.docker.com/docker-for-mac/install/)
- my.cnfの設定(しなくても問題ないが、したほうがいい)
立ち上げ方
・DockerHubからMariaDBイメージをダウンロード
docker pull mariadb
・mariadbのイメージをインストールできたことを確認
~ $ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
mariadb latest 2cxxxxxxxxxx 3 weeks ago 363MB
~ $
・mariadbを立ち上げる
docker run -v ~/tmp/mysql/:/etc/mysql/conf.d --name mariadb-server -e MYSQL_ROOT_PASSWORD="password" -e MYSQL_DATABASE=database -e MYSQL_USER=user -d -p 63306:3306 mariadb
上記の設定の説明
項目 | 説明 |
---|---|
-v ~/tmp/mysql/:/etc/mysql/conf.d | 公式だと/etc/mysql/conf.d配下のmy.cnfを読みに行くからマウンティングさせる |
--name mariadb-server | タグ名を指定 |
-e MYSQL_ROOT_PASSWORD="password" | passwordを指定 |
-e MYSQL_DATABASE=database | database名を指定 |
-e MYSQL_USER=user | user名を指定 |
-p 63306:3306 | ホストの63306を3306にフォワード |
mariadb | イメージの指定 |
文字コードをUTF8にする
上記の立ち上げ方では、-v ~/tmp/mysql/:/etc/mysql/conf.d を設定している。
設定せずに起動すると。。。
docker run --name mariadb-server -e MYSQL_ROOT_PASSWORD="password" -e MYSQL_DATABASE=database -e MYSQL_USER=user -d -p 63306:3306 mariadb
以下のように文字コードがUTF8でないので、日本語が文字化ける
MariaDB [sample]> show variables like "chara%";
+--------------------------+----------------------------+
| Variable_name | Value |
+--------------------------+----------------------------+
| character_set_client | latin1 |
| character_set_connection | latin1 |
| character_set_database | latin1 |
| character_set_filesystem | binary |
| character_set_results | latin1 |
| character_set_server | latin1 |
| character_set_system | utf8 |
| character_sets_dir | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
文字化けを解消するには、起動の際に設定ファイルを読ませる。
読ませるためのファイルも以下のように作成すること
~ $ cat ~/tmp/mysql/my.cnf
[mysqld]
character-set-server=utf8
[client]
default-character-set=utf8
~ $
設定しておけば以下のように文字コードがUTF8になる
MariaDB [sample]> SHOW VARIABLES LIKE "chara%";
+--------------------------+----------------------------+
| Variable_name | Value |
+--------------------------+----------------------------+
| character_set_client | utf8 |
| character_set_connection | utf8 |
| character_set_database | utf8 |
| character_set_filesystem | binary |
| character_set_results | utf8 |
| character_set_server | utf8 |
| character_set_system | utf8 |
| character_sets_dir | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
Dockerの簡単な操作
・起動しているコンテナの確認
docker ps
・停止しているコンテナの確認
docker ps -a
・起動したコンテナを止める
docker stop {コンテナID}
・コンテナを指定して起動する
docker start {コンテナID}
・コンテナからmysqlに接続
// コンテナに入る
docker exec -it {コンテナID} bash
// コンテナからmysqlに入る
mysql -u root -p
・外部からmysqlに接続
※ localhostにするとホストのmysqlに接続しようとする。127.0.0.1で設定すること
mysql -uroot -ppassword -h 127.0.0.1 -P 63306