今回は、Docker上でMySQL環境を構築したので、それについてまとめようと思います。英語の公式ドキュメント通りにやっただけなので、まさに備忘録という感じです。本当は、Docker環境下でubuntuイメージからスタートし、自分なりの環境を持ったMySQL環境を構築し、かつdockerfileに落とし込むところまで行きたかったのですが、無念・・・どうしてもできませんでした・・・。
4日くらいかけて環境構築できなかったので、さすがにそれは諦め、MySQL組織が提供する公式imageを利用することにしました。おそらく、最新バージョンのMySQLの公式ドキュメントは英文のものしか出ていないと思うので、ドキュメント通りにDocker上にMySQL環境を作りたいのに、英語があんま得意でない、という方のお役に立てればと思っています。
なお、今回の構築環境は以下になります。
- PC: Macbook
- Docker: ver18.06.1
- docker image: mysql/mysql-server(MySQLの公式image)
- MySQL: ver8.0.12(公式imageのlatestに該当)
- MySQL公式ドキュメント 該当ページ: 2.5.6 Deploying MySQL on Linux with Docker
- 備考: 今回の環境構築は、MySQL Community版に基づいており、エンタープライズ版の環境構築とは異なるところがあります
1. イメージの取得
$ docker pull mysql/mysql-server:latest
2. コンテナの生成
$ docker run --name mysql -d mysql/mysql-server
ここでのポイントは以下になります。
-d
…バックグラウンドでの実行を推奨。フォアグランドに指定すると正常に起動しない- パスワードは自動生成されるため、この時点で環境変数を指定して入力する必要はない(3.以降参照)
- mysql serverは自動的に立ち上がるようになっている
パスワードは自動生成されたのち、下記で記載しているように、変更することができます。
3. パスワードの確認
$ docker logs mysql
このコンテナは、バックグラウンドで実行されているため、ターミナルに進捗画面が出てきません。そのため、dockerのlogs
コマンドを利用し、実行画面を見ます。その中の”GENERATED ROOT PASSWORD”という項目にパスワードが記入されています。
4. mysql cliantによるmysql serverへのアクセス
$ docker exec -it mysql mysql -u root -p
ここでのポイントは以下になります。
exec
…メインプロセスとは別のプロセスでmysql serverにアクセスする必要があるmysql -u root -p
…rootユーザでアクセス
上記コマンドを実行するとパスワード入力画面が出るため、3.で確認したパスワードを入力すると、mysql serverのターミナル画面にいきます。コンテナのターミナル部分とは異なるので、その点はややこしいかと思いますが、mysqlのターミナル画面ではmysql>
というプロンプトが出ます。mysql cliantは、このターミナルなど、mysql serverとユーザとを繋ぐインターフェイス部分に関するプログラム一式のことを指します。
5. パスワードの変更
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY '<password>’;
<password>という部分に任意のパスワードを入力することで、パスワードの変更が完了です。これにより、事前準備が完了し、MySQLを使用できるようになります。
まとめ
以上が、MySQL8.0の公式ドキュメントで言及されているdocker環境下でのMySQL環境の構築方法です。ubuntuからの実装はいずれまた挑戦して見たいと思います。
読んでくださった方、ありがとうござました。