0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

【便利すぎる】DockerでMySQLを動かす&初期データも入れる方法

Last updated at Posted at 2022-06-14

概要

開発でMySQLをローカル環境で構築する必要があったため、Dockerを使って試してみました。
また、初期データを入れる方法も調べて検証してみました。

準備

フォルダ構成

dev/01.sql
docker-compose.yml

docker-compose.yml

docker-compose.yml
db:
  image: mysql:latest
  volumes:
    - ./dev:/docker-entrypoint-initdb.d
  environment:
    - MYSQL_ROOT_PASSWORD=root

上記のように、./dev下にsqlファイルを置くことでDocker compose実行時に実行してくれます。
フォルダ名は./devである必要はありません。

When a container is started for the first time, a new database with the specified name will be created and initialized with the provided configuration variables. Furthermore, it will execute files with extensions .sh, .sql and .sql.gz that are found in /docker-entrypoint-initdb.d

初期データ登録用SQL

今回は以下のSQLを用意し、後でテーブル内の値を取得してみます。

01.sql
DROP SCHEMA IF EXISTS sample;
CREATE SCHEMA sample;
USE sample;

DROP TABLE IF EXISTS employee;

CREATE TABLE employee
(
  id           INT(10),
  name     VARCHAR(40)
);

INSERT INTO employee (id, name) VALUES (1, "test1");
INSERT INTO employee (id, name) VALUES (2, "test2");

検証結果

Docker compose 起動

以下コマンドでDockerを起動してみます。

docker-compose up

ログをみると、01.sqlが実行されていることが分かります。

db_1  | 2022-06-14 12:58:54+00:00 [Note] [Entrypoint]: /usr/local/bin/docker-entrypoint.sh: running /docker-entrypoint-initdb.d/01.sql

MySQLへの接続確認

以下コマンドでコンテナIDを確認します。

docker ps

以下コマンドでコンテナ内のMySQLにログインしてみます。
パスワードはdocker-compose.yml内のMYSQL_ROOT_PASSWORDの値を指定します。

docker exec -it コンテナID mysql -u root -p
Enter password:

ログインに成功すると、以下のような画面になります。

Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 10
Server version: 8.0.29 MySQL Community Server - GPL

Copyright (c) 2000, 2022, Oracle and/or its affiliates.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql>

初期データの確認

データベースを選択します。

mysql> use sample;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed

テーブル内の値をselectしてみると、01.sqlで流したデータが格納されていることが分かります。

mysql> select * from employee;
+------+---------+
| id   | name    |
+------+---------+
|    1 | test1 |
|    2 | test2  |
+------+---------+
2 rows in set (0.00 sec)

まとめ

DockerでMySQLを動かす&初期データも入れる方法を紹介しました。
この方法により、自身のPCを汚すことなく、MySQLをガチャガチャ触れるようになります。
開発の効率が上がると思うので、ぜひ試してみてください。

参考

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?