この記事ではMySQLの実行環境をDockerで作った後に、MySQL Workbenchで接続してテーブルを作成してみるまでをやっています。
Docker Composeファイルを使って、MySQLコンテナを起動してみています。
動作を確認したOSはWindows10(Docker Desktop)で、MySQLの8.0.33を使っています。
MySQLの実行環境をDockerで作る
それでは、MySQLの実行環境をDockerで作成していきます。
最初にファイルとディレクトリの構成を説明して、それぞれのファイルを作成します。
ディレクトリ構成
ディレクトリ構成は下記のようになりました。
docker-compose.yml
my.cnf
mysql_log/
mysql_log/
はディレクトリです。
ログを出力するためのディレクトリとして用意してみました。
ファイルとしては、docker-compose.yml
ファイルと、MySQLの設定ファイル(my.cnf)を用意します。
Docker Composeファイルを用意する
それでは、docker-compose.yml
ファイルを用意します。
今回は下記のように作ってみました。
version: '3.8'
services:
db:
image: mysql:8.0.33
ports:
- 3306:3306
environment:
MYSQL_ROOT_PASSWORD: password
volumes:
- mysql:/var/lib/mysql
- ./my.cnf:/etc/mysql/my.cnf
- ./mysql_log:/var/log/mysql
volumes:
mysql:
name: mysql-db-volume
driver: local
Dockerイメージとしては、MySQLの8.0.33
(2023/05時点での最新)を使っています。
rootユーザーのパスワードをpasswordにしました。
そして、Dockerのvolumeを使って、データが永続化されるように設定しています。
通常だとコンテナを停止すると、データも消えてしまいます。
設定ファイル(my.cnf)を用意する
設定ファイルには、とりあえず実行したSQLをログとして、すべて残すようにしました。
[mysqld]
general_log=1
general_log_file=/var/log/mysql/query.log
不要な場合は空ファイルでもよいかと思います。
起動する
下記の3つのファイルが用意できたら起動してみましょう。
・docker-compose.ymlファイル
・my.cnfファイル
まず、Docker Desktopを起動した後に、3つのディレクトリとファイルを置いたディレクトリに移動します。
そして、下記コマンドで起動することができます。
docker-compose up -d
docker-composeコマンドでupを指定して起動しました。
これで、カレントディレクトリに存在するdocker-compose.ymlを参照してコンテナを作ってくれます。
-d
オプションをつけることで、バックグラウンドで処理してくれます。
実行して、下記のように問題なく起動できれば成功です。
> docker-compose up -d
[+] Running 2/2
✔ Network mysql8-docker_default Created 0.0s
✔ Container mysql8-docker-db-1 Started
停止するには?
環境を停止するには、docker-composeコマンドにdownを指定します。
docker-compose down
実行すると、下記のようにコンテナとネットワークがRemovedされます。
特にエラーが出なければ問題なく停止できています。
> docker-compose down
[+] Running 2/2
✔ Container mysql8-docker-db-1 Removed 1.8s
✔ Network mysql8-docker_default Removed
DockerコンテナにMySQL Workbenchから繋いでみる
MySQL WorkbenchはGUIのMySQLクライアントです。
公式から配布されていて、こちらからダウンロードすることができます。
MacでもWindowsでも使うことができます。
ダウンロードしたらインストールしてください。
インストールして起動すると、下記のように表示されます。
接続先の設定を作成します。
MySQL Connectionsのプラスマークをクリックします。
すると、セットアップ画面が表示されます。
Connection Name
は、接続先を識別するための名前なので、わかりやすい名前を入れておきます。
Hostname
は接続するコンピュータです。ローカルなので127.0.0.1
のままでよいです。
Port
もdocker-compose.ymlファイルに3306を指定しているので、そのままで良いです。
Username
もrootのままでOKです。
Password
の項目で、「Store in Vault...
」をクリックするとパスワードを入力する画面がでてくるので、docker-compose.ymlファイルで指定したpasswordを設定します。
OKをおしてパスワードをいれたら、またOKボタンをおして、接続先のセットアップを完了します。
セットアップが完了すると、下記のように作成した接続先が表示されます。
クリックすると接続してくれるので、Docker環境を起動して接続してみてください。
起動すると、下記のようにエラーが出ずにSQLが実行できる状態になります。
これで、MySQLでSQLが実行できる状態になりました。
データベースを作成してみる
データベースを作ってみます。
クエリを入力するエリアに、下記のSQLを入力して実行します。
CREATE DATABASE test;
実行すると、下記のようにSQLが実行できた状態になり、最新情報を取得するとデータベースが作成できてることが確認できました。
my.cnfファイルが読み込めないとき
my.cnfファイルが読み込めないときに、下記の警告が発生していました。
[Warning] World-writable config file '/etc/mysql/my.cnf' is ignored.
このときにはmy.cnfファイルのプロパティを開いて、読み込み専用にしてあげるとファイルの設定が読み込めるようになりました。
MySQLの実行環境をDockerで作る方法まとめ
今回はMySQLの実行環境をDockerで作成していきました。
記事の内容をまとめると、下記のようになります。
・docker-composeコマンドで、作成したコンテナの起動や停止ができた。
・MySQL WorkbenchからMySQLにつないで、データベースを作成した。
コメント