DockerでMySQL環境を1コマンドで簡単に構築する方法

Docker

MySQL環境構築

MySQLの環境をさっと作りたいけど、ローカルにインストールするのは面倒だったり、エラーでうまくいかなかったり、環境構築って面倒ですよね!

そんな時はこれから紹介するDockerを使うと便利です。

Dockerを使えば、環境構築が簡単になるだけでなく、複数のMySQLを立ち上げる事もできるので、プロジェクト毎に使い分けるってことも可能です!

Dockerをまだインストールしていない方はこちらからインストールしてください!

Macでの手順はこちら。

Ubuntuでの手順はこちら。

MySQLの構築

実行コマンド

それではDockerでMySQLを構築するためのコマンドを見ていきます。

コマンドはこちらです!めちゃくちゃ簡単ですね!!

$ docker run --name mysql -v `pwd`/docker/mysql/data:/var/lib/mysql -p 3306:3306 -e MYSQL_DATABASE=database -e MYSQL_ROOT_PASSWORD=root -e MYSQL_USER=mysql -e MYSQL_PASSWORD=mysql mysql:5.7

実行コマンド補足

  • mysql:5.7という記述でMySQL5.7を構築している
  • カレントディレクトリにdockerというディレクトリを作成してMySQLのボリュームをマウントしている
  • MYSQL_DATABASEで、データベース名を指定し作成している
  • MYSQL_ROOT_PASSWORDでrootユーザのパスワードを指定している
  • MYSQL_USERで一般ユーザを作成している
  • MYSQL_PASSWORDで一般ユーザのパスワードを指定している

また今回はMySQL5.7で作成していますが、別のバージョンを指定して構築することも可能です。

カレントディレクトリにMySQLのボリュームをマウントしているので、コンテナ停止後も再度このディレクトリを指定して起動すれば、データを永続化させることが可能です。

データを初期化したい場合は、このマウントされたディレクトリを削除すればOKです。

上記だと日本語が使えなかったので、以下のようにした

MySQLのconfig追加

docker/mysql/config/my.cnf

[mysqld]
character-set-server=utf8mb4
collation-server=utf8mb4_bin
skip-character-set-client-handshake
default-storage-engine=InnoDB
innodb_file_per_table=1
innodb_large_prefix=1
innodb_file_format=Barracuda
innodb_default_row_format=DYNAMIC
default_password_lifetime = 0
slow_query_log = 1
long_query_time = 5
slow_query_log_file = /var/log/mysql-slow-query.log

[mysql]
auto-rehash
default-character-set = utf8mb4

[mysqldump]
default-character-set = utf8mb4

Dockerfile追加

docker/mysql/Dockerfile

FROM mysql:5.7.12

COPY ./docker/mysql/config/my.cnf /etc/mysql/conf.d/my.cnf

コマンド実行

ビルド

$ docker build \
--rm \
--no-cache \
-t my_mysql \
-f docker/mysql/Dockerfile .

実行

フォアグラウンド

docker run -it -p 8080:3000 my_mysql

バックグラウンド

docker run -itd --name mysql -v `pwd`/docker/mysql/data:/var/lib/mysql -p 3306:3306 -e MYSQL_DATABASE=database -e MYSQL_ROOT_PASSWORD=root -e MYSQL_USER=mysql -e MYSQL_PASSWORD=mysql my_mysql

接続方法

接続コマンド

接続する際は、起動しているMySQLコンテナのIPなどを調べても良いですが、面倒なので、-h 0.0.0.0のようにすると簡単に接続できます。

$ mysql -h 0.0.0.0 -uroot -p'root'

こんな感じでMySQLに接続できればOK。

$ mysql -h 0.0.0.0 -uroot -p'root'
mysql: [Warning] Using a password on the command line interface can be insecure.
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 2
Server version: 5.7.27 MySQL Community Server (GPL)

Copyright (c) 2000, 2019, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> 

Dockerコマンドで指定したdatabaseという名前のデータベースが作成されていればOKですね!

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| database           |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
5 rows in set (0.04 sec)

まとめ

今回はDockerでMySQLを簡単に構築しました!

Dockerを使うと環境構築が圧倒的に楽になりますし、実質Webエンジニアとしては必須のスキルなので学習してマスターできるといいですね!

オススメの関連商品

Note一覧

コメント