こんにちは!インフラジスティックス・ジャパン ソリューションコンサルタントの滝元です。
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テーブルにデータがあることを確認できました!