こんにちは、おくやんです。
このブログでは、開発に役立つノウハウを実践的なコード例と共に紹介しています。
だけど、方法がわからない。。。
今回は、このようなお悩みを解決します。
本記事の内容
今回はDocker上でMySQL環境を構築する手順についてまとめました。
MySQLは世界で最も利用されているオープンソースのデータベース管理システムです。開発現場で利用する機会も非常に多いと思います。
Docker Hubに公開されているイメージを利用すると非常に簡単に環境構築ができますので、本記事を通じて構築方法をぜひ覚えてください。
Docker Hubの公式イメージとは
今回はDocker Hub上にあるMySQLの公式イメージを利用して、環境構築を行っていきます。
Dockerを利用し始めてすぐの人は、「Docker Hubとは?」「公式イメージとは?」と思う方もいるかもしれません。まずはDocker Hubについて解説していきます。
Docker Hubとは
Docker HubとはDockerイメージのリポジトリのようなサービスで、公開されているイメージを自由に利用できることができます。
サイトへは下記URLからアクセスできます。
公開されているイメージを利用する以外にも、ユーザが作成したイメージをアップロードして公開・共有することもできます。
公式イメージとは
公式イメージとは公開されているDockerイメージの中で、Docker社が厳選したイメージのことです。
下記のような条件をもとに選定されます。
公式イメージの条件例
・広く利用されているプログラミング言語、DB、サービスを利用している
・ドキュメントが充実している
・セキュリティ対策などアップデートが定期的に実施されている
公式イメージにはサイト上で「DOCKER OFFICIAL IMAGE」というタグが付いているので見分けることができます。
それでは、実際に公式イメージを利用した環境構築を行っていきましょう。
MySQLのDockerイメージを利用した環境構築手順を解説
Dockerを利用してMySQLの環境構築を行っていきます。
手順は下記となります。
MySQLの環境構築手順
2. docker-compose.ymlの作成
3. 環境変数設定ファイルの作成
4. Dockerを立ち上げ
なお、環境構築は下記システム環境で行っています。
システム環境
OS | Windows 10 |
Docker for Windows | 4.19.0 |
Dokcer | 23.0.5 |
Docker Compose | v2.17.3 |
まずは利用するDockerイメージを選定していきます。
1. 利用するイメージの決定
初めに利用するイメージを決定していきましょう。
MySQLの公式イメージは下記から確認することができます。
1つアプリケーションに対してバージョン別、OS別など複数のイメージが提供されています。
「Tags」から提供されているイメージの内容を確認し、どれを利用するか決めましょう。
今回は8.0.33-debian(MySQL: 8.0.33、OS: debian)を利用して環境構築を行っていきます。
2. docker-compose.ymlの作成
docker-compose.ymlを作成します。
下記の内容でファイルを作成してください。
docker-compose.yml
version: '3.8'
services:
db:
image: mysql:8.0.33-debian
environment:
- TZ=Asia/Tokyo
volumes:
- db-data:/var/lib/mysql
ports:
- 13306:3306
env_file:
- .env
cap_add:
- SYS_NICE
volumes:
db-data:
driver: local
docker-compose.ymlの書き方に関しては下記で詳しく解説していますので、ご確認ください。
>> 【初心者向け】docker-compose.ymlの書き方を調べてみた
ポイントを解説します。
公式イメージの指定
image: mysql:8.0.33-debian
利用するMySQLの公式イメージを指定しています。
別のバージョンや別のOSを利用したイメージもあるので、Docker Hubを確認しつつ、用途に適したものを選択してください。
名前付きボリュームの設定
db:
・・・
volumes:
- db-data:/var/lib/mysql
・・・
volumes:
db-data:
driver: local
データを永続化させるために、コンテナ上の/var/lib/mysqlに名前付きボリュームを割り当てています。
今回は名前付きボリュームをdb-dataという名前で作成してます。
環境変数設定ファイルの設定
env_file:
- .env
公式イメージを利用するために必要な環境変数を、外部ファイルから読み込む設定としています。
docker-compose.ymlと同階層にある「.env」から定義を読み込みます。
ケイパビリティ「CAP_SYS_NICE」の追加
cap_add:
- SYS_NICE
Docker起動時、ターミナルに「mbind: Operation not permitted」とエラーが出力される場合は定義します。
詳細は下記の記事を参照ください。
>> 【Docker+MySQL】「mbind: Operation not permitted」の対応
次に環境変数設定ファイルを作りましょう。
3. 環境変数設定ファイルの作成
公式イメージの起動に必要な環境変数を定義したファイルを作ります。
以下4つの環境変数を定義してください。
.env
MYSQL_ROOT_PASSWORD=root_pw
MYSQL_DATABASE=app_development
MYSQL_USER=okuyan
MYSQL_PASSWORD=okuyan_pw
設定値は必要に応じてを変更してください。各設定の内容は下記となります。
設定する環境変数
MYSQL_ROOT_PASSWORD | rootユーザのパスワード |
MYSQL_DATABASE | データベース名 |
MYSQL_USER | ユーザ名 |
MYSQL_PASSWORD | ユーザのパスワード |
これで準備は完了となります。
4. Dockerを立ち上げ
Dockerを立ち上げてみましょう。
ターミナルを起動し、下記コマンドを実行してください。
docker-compose up -d
起動が完了したら、SQLクライアントツールを利用し、DBにアクセスできるか確かめてみましょう。
docker-compose.ymlや環境変数で設定した内容で、DBが作成されていることが確認できました。
終了する際は下記コマンドを実行してください。
docker-compose down
以上で、環境構築は完了です。
まとめ:Docker上でMySQL環境を構築しよう
本記事ではDocker上でMySQL環境を構築する手順について解説しました。
環境構築は下記4つの手順となります。
MySQLの環境構築手順
2. docker-compose.ymlの作成
3. 環境変数設定ファイルの作成
4. Dockerを立ち上げ
Docker Hubを利用することで、手間をかけることなく環境構築が行えます。
MySQLに限らず利用する機会は非常に多いと思いますので、ぜひ使い方を覚えておきましょう。
最後まで読んでいただき、ありがとうございます。