DockerでMySQLとphpAdminのコンテナを作るやり方 | docker-composeの書き方
DockerでMySQLとphpAdminのコンテナの作り方を一緒に学びます。
今回は、docker-composeを使って作成します。
必要なもの
dockerのインストール
ディレクトリ構成
docker/
├ mysql/
│ ├ conf/ # mysqlの設定ファイル
│ │ └ my.cnf
│ └ init/ # 初期データ投入sql
│ └ init.sql
└ docker-compose.yml
Docker composeの書き方
今回は、公式のMySQLとphpAdminのイメージを使います。
MySQLのバージョンは、5.7を使用します。
以下、docker-compose.ymlです。
version: '3'
services:
# MySQL
db:
image: mysql:5.7
container_name: mysql_test
environment:
MYSQL_ROOT_PASSWORD: root
MYSQL_DATABASE: sample
MYSQL_USER: rebelapp
MYSQL_PASSWORD: rebelapp
TZ: 'Asia/Tokyo'
command: mysqld --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci
volumes:
- ./mysql/data:/var/lib/mysql
- ./mysql/conf:/etc/mysql/conf.d
- ./mysql/init:/docker-entrypoint-initdb.d
ports:
- 3306:3306
# phpMyAdmin
phpmyadmin:
container_name: phpmyadmin_test
image: phpmyadmin/phpmyadmin
environment:
- PMA_ARBITRARY=1
- PMA_HOSTS=mysql_test
- PMA_USER=root
- PMA_PASSWORD=root
ports:
- 8081:80
書き方のポイント
MySQLのイメージ ・MySQLのイメージを5.7を使用 ・コンテナ名は、任意の名前で可! ・environmentには、mysqlのユーザー名、パスワード、DBの名前を設定 ・commandには、mysqlの立ち上げと文字コードを設定 ・volumeには、data/配下に永続化のためのデータ、conf/配下に設定ファイル、init/配下に初期化のSQLファイルをマウントする。 ・portでポートフォワーディングを行う。 phpAdminのイメージ ・コンテナ名は、任意の名前で可! ・environmentには、mysqlの記載されたコンテナ名、user/passwordを設定 ・portでポートフォワーディングを行う。
MySQLのファイルを設定
my.cnf
[mysqld]
character-set-server=utf8mb4
collation-server=utf8mb4_unicode_ci
[client]
default-character-set=utf8mb4
ここには、文字コードの情報を書き込んでいます。
init.sql
(例)
-- create user
create table IF not exists `user`
(
`id` INT AUTO_INCREMENT PRIMARY KEY,
`email` VARCHAR(255) NOT NULL,
`password` VARCHAR(255) NOT NULL,
`created_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
`updated_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
上記は、あくまで一例ですが、このinit.sqlに初期テーブルの生成や初期データの投入するSQLをかけば読み込んでくれます。
しかし、コンテナ生成時しか読み込ないので、ご注意ください。
docker-composeでMySQLをビルド
それでは、docker-composeをビルドしましょう。
コマンドは、以下のコマンドです。
docker-compose up -d
これで、MySQLとphpAdminが立ち上がりました。
以下のURLにアクセスするとphpAdminにアクセスして、MySQLの中身を見ることができます。
コンテナの起動・停止・確認
コンテナが立ち上がっているかを確認します。
以下のコマンドを入力しましょう。
docker ps
これで、dockerの立ち上がっているコンテナの一覧を見ることができます。
コンテナの停止は、以下のコマンドです。
docker stop <コンテナ名>
コンテナの起動は、以下のコマンドです。
docker start <コンテナ名>
これで、ローカル環境に自由にMySQLを使って開発をすることができます。
もう一つMySQLのコンテナを作りたいときは、ポートフォワーディングなどをして、うまくポートが被らないようにする必要があります。
人気記事 Springbootの環境構築から Hello worldまで on Mac