LoginSignup
6
6

More than 5 years have passed since last update.

Dockerを使ってMySqlを立ち上げる

Last updated at Posted at 2018-08-18

はじめに

Dockerを使って開発環境用のmysqlを立てることにした。
インフラ系が苦手で少し苦労したので、構築から接続までの流れをメモに残しておく。

事前準備

立ち上げ方

・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

Enjoy your docker life

6
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
6