インフラジスティックス・ジャパン株式会社Blog

インフラジスティックス・ジャパン株式会社のチームメンバーが技術トレンド、製品Tips、サポート情報からライセンス、日々の業務から感じることなど、さまざまなトピックについてお伝えするBlogです。

Docker Composeを使用して、初期データが入ったMySQLデータベースをセットアップする

こんにちは!インフラジスティックス・ジャパン ソリューションコンサルタントの滝元です。

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テーブルにデータがあることを確認できました!