こんにちは!インフラジスティックス・ジャパン ソリューションコンサルタントの滝元です。
PoC アプリを作成するときにデータベースをサクッと用意したいときはありませんか? 本記事では Docker Compose を使用して、初期データが入った MySQL データベースをセットアップする方法を共有いたします。
Docker Composeファイルの作成
docker-compose.yml ファイルを作成し、MySQLサービスの設定を記述します。
docker-compose.yml
version: "3.1"
services:
db:
image: mysql:8.2.0
environment:
MYSQL_ROOT_PASSWORD: password
MYSQL_DATABASE: mydatabase
MYSQL_USER: user
MYSQL_PASSWORD: password
volumes:
- ./data:/docker-entrypoint-initdb.d
ports:
- "3306:3306"
この設定では、./data ディレクトリにある init.sql スクリプトを使用して、MySQLサーバーが初めて起動したときにデータベースとテーブルが作成され、初期データが挿入されます。
初期データスクリプトの準備
データベースとテーブルを作成し、初期データを挿入するSQLスクリプトを作成します。
./data/init.sql
CREATE TABLE IF NOT EXISTS user (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(255) NOT NULL,
email VARCHAR(255) NOT NULL,
age INT,
city VARCHAR(255),
country VARCHAR(255),
status VARCHAR(50),
phone VARCHAR(20)
);
INSERT INTO user (name, email, age, city, country, status, phone) VALUES ('田中太郎', 'tanaka@example.com', 30, '東京', '日本', 'アクティブ', '090-1234-5678');
INSERT INTO user (name, email, age, city, country, status, phone) VALUES ('佐藤花子', 'sato@example.com', 28, '大阪', '日本', '休止中', '080-9876-5432');
INSERT INTO user (name, email, age, city, country, status, phone) VALUES ('鈴木一郎', 'suzuki@example.com', 35, '福岡', '日本', 'アクティブ', '070-1111-2222');
INSERT INTO user (name, email, age, city, country, status, phone) VALUES ('高橋洋子', 'takahashi@example.com', 26, '札幌', '日本', 'アクティブ', '090-3333-4444');
INSERT INTO user (name, email, age, city, country, status, phone) VALUES ('伊藤優子', 'ito@example.com', 40, '名古屋', '日本', '休止中', '080-5555-6666');
INSERT INTO user (name, email, age, city, country, status, phone) VALUES ('山本健太', 'yamamoto@example.com', 22, '仙台', '日本', 'アクティブ', '070-7777-8888');
INSERT INTO user (name, email, age, city, country, status, phone) VALUES ('中村純子', 'nakamura@example.com', 32, '広島', '日本', '休止中', '090-9999-0000');
INSERT INTO user (name, email, age, city, country, status, phone) VALUES ('小林龍之介', 'kobayashi@example.com', 29, '神戸', '日本', 'アクティブ', '080-1212-3434');
INSERT INTO user (name, email, age, city, country, status, phone) VALUES ('加藤美咲', 'kato@example.com', 27, '福井', '日本', 'アクティブ', '070-5656-7878');
INSERT INTO user (name, email, age, city, country, status, phone) VALUES ('渡辺健', 'watanabe@example.com', 45, '金沢', '日本', '休止中', '090-9090-8080');
実行手順
- 上記の docker-compose.yml と init.sql を準備します。
コマンドラインで、docker-compose.yml ファイルがあるディレクトリに移動します。
コマンドを実行して、コンテナを起動します。
docker-compose up
これで、Docker Composeを使用して初期データが入ったMySQLデータベースをセットアップできます。
DB クライアントで確認

Userテーブルにデータがあることを確認できました!