こんにちは!今回は、Dockerを使ってMySQLの環境をサクッと作る方法を詳しく解説します。初心者の方でも簡単に取り組めるように、手順を丁寧に説明しつつ、実践的な設定例もご紹介します!
事前に用意するもの
-
DockerとDocker Compose
-
Dockerの公式サイト(https://www.docker.com/)からインストール。
-
-
テキストエディタ
-
docker-compose.ymlを作成・編集するために必要です。おすすめは以下のいずれか。
-
Visual Studio Code
-
メモ帳(Windows)/テキストエディット(Mac)
-
設定ファイルの例
以下は、MySQL環境を構築するための更新済みdocker-compose.ymlファイルです。この設定では、MySQL 5.7を使用し、データベース名をsampleに変更しています。
docker-compose.yml
version: '3.8'
services:
sample:
image: mysql:5.7
container_name: sample
volumes:
- db_data:/var/lib/mysql
restart: always
environment:
MYSQL_ROOT_PASSWORD: {ルートパスワード}
MYSQL_DATABASE: sample
MYSQL_USER: {ログインユーザID}
MYSQL_PASSWORD: {パスワード}
TZ: "Asia/Tokyo"
ports:
- "3307:3306"
networks:
- db-network
volumes:
db_data:
driver: local
networks:
db-network:
external: true
各項目の解説
version
-
3.8: Docker Composeファイルのバージョンを指定します。最新の機能を利用可能。
services
-
サービス(コンテナ)を定義します。ここではsampleというMySQLサービスを構築。
image
-
使用するDockerイメージを指定します。
-
mysql:5.7: MySQLのバージョン5.7を利用。
container_name
-
コンテナの名前をsampleに設定します。
-
コンテナ名を明示することで、操作時に指定しやすくなります。
volumes
-
データを永続化するための設定。
-
db_data: ホスト側の保存領域を指定。
-
/var/lib/mysql: コンテナ内でMySQLがデータを保存するディレクトリ。
restart
-
再起動ポリシーを指定。
-
always: コンテナが停止した場合やホストマシン再起動時に自動再起動。
environment
-
MySQLの初期設定を環境変数で定義。
-
MYSQL_ROOT_PASSWORD: MySQLのrootユーザーのパスワード。
-
MYSQL_DATABASE: 起動時に作成されるデータベースの名前。
-
MYSQL_USER: アプリケーション用の専用ユーザー。
-
MYSQL_PASSWORD: 上記ユーザーのパスワード。
-
TZ: コンテナのタイムゾーン(日本時間を設定)。
ports
-
ホストとコンテナのポートをマッピング。
-
3307:3306: ホスト側のポート3307をコンテナ内の3306(MySQLのデフォルトポート)に接続。
networks
-
コンテナが接続するネットワークを指定。
-
db-network: 外部ネットワークを利用して他のサービスと連携可能。
-
external: true: 事前に作成したネットワークを使用(後述のコマンドで作成)。
volumes
-
データの保存領域を指定。
-
db_data: MySQLのデータを永続化。
-
driver: local: ホストのローカルストレージを利用。
実行手順
1 . 設定ファイルを保存
上記の内容をdocker-compose.ymlという名前で保存します。
2 . ネットワークを作成
外部ネットワークdb-networkを作成します。以下のコマンドを実行してください(初回のみ必要です)。
docker network create db-network
3 . コンテナを起動
設定したdocker-compose.ymlを使ってコンテナを起動します。
docker-compose up -d
4 . コンテナの状態を確認
以下のコマンドを実行して、コンテナが正常に起動しているか確認します。
docker ps
実行結果にsampleコンテナが表示されれば成功です。
Dockerコンテナ内にログインしてMySQLを操作する手順
1. コンテナ内にログイン
まず、起動中のコンテナを確認します。以下のコマンドを実行してください。
docker ps
実行結果の例:
% docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
XXXXXXXXXXXX mysql:5.7 XXXXXXX XX minutes ago Up XX minutes 33060/tcp, 0.0.0.0:3307->3306/tcp sample
上記のNAMES列に記載されたコンテナ名(この場合はsample)を確認します。
次に、以下のコマンドを実行して、該当するMySQLコンテナ内にログインします。
docker exec -it sample bash
sampleはコンテナ名です。docker psで確認したNAMES列に表示されている名前を使用してください。
2. MySQLクライアントにログイン
コンテナ内でMySQLクライアントを起動します。
mysql -u {ログインユーザID} -p
-
パスワード: {パスワード}(MYSQL_PASSWORDで設定した値を入力)。
3. データベースを確認
MySQLにログインしたら、以下のコマンドでデータベース一覧を確認できます。
SHOW DATABASES;
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| sample |
+--------------------+
まとめ
docker-compose.ymlを保存し、必要なコマンドを順番に実行するだけで簡単にMySQL環境をセットアップできます。DockerとDocker
Composeを活用すれば、短時間で効率的にMySQL環境を構築できます。本記事の手順を実行するだけで、以下のことが簡単に実現可能です。
-
MySQLのインストールや設定の手間を削減
手動でソフトウェアをインストールする必要がなく、コンテナを利用することで簡単に環境を再現できます。 -
永続化されたデータストレージの利用
Dockerのボリューム機能を活用して、データを永続的に保存できます。 -
カスタマイズの容易さ
docker-compose.ymlを変更するだけで、バージョンや環境設定を柔軟に変更できます。
次に試すべきこと
-
アプリケーション連携
作成したMySQL環境を、PHPやNode.jsなどのアプリケーションと連携させてみましょう。 -
MySQL WorkbenchやGUIツールの利用
MySQL Workbenchなどのツールを使用して、GUIでデータベースを操作するとさらに便利です。 -
Docker環境を複数構築
他のサービス(例:Redis、Nginx)と一緒に環境を構築し、より実践的な開発環境を整えてみましょう。
これらの手順を活用し、効率的な開発環境の構築をお楽しみください!ぜひ手を動かして試してみてくださいね!最後までお読みいただき、ありがとうございました!