DockerでMySQLコンテナ起動時に初期データを投入する
DockerでMySQLコンテナ起動時に初期データを投入する
備忘録として残しておきたいと思います。
参考:
・DockerのMySQLに初期データを投入する
・Docker MySQLコンテナ起動時に初期データを投入する
ファイル
【階層】
階層は下の通りです。
build_mysql
├─docker-compose.yml
└─initdb.d
└─init.sql
【docker-compose】
下記ように書くことで、docker-compose.ymlと同階層にある「initdb.d」という名前のディレクトリ配下の「.sql」「.sh」「.sql.gz」ファイルを実行してくれます。
version: "3"
services:
mysql:
image: mysql:latest
container_name: mysql_container
environment:
- MYSQL_ROOT_PASSWORD=rootpassword
volumes:
- ./initdb.d:/docker-entrypoint-initdb.d
restart: always
【init.sql】
データベース、テーブルを作成して初期データとして名前を入れてみます。
DROP DATABASE IF EXISTS test_db;
CREATE DATABASE test_db;
USE test_db;
DROP TABLE IF EXISTS test_table;
CREATE TABLE test_table (
id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
name TEXT NOT NULL
)DEFAULT CHARACTER SET=utf8;
INSERT INTO test_table (name) VALUES ("john"),("alex"),("ben");
確認
# コンテナ作成
docker-compose up -d
Creating mysql_container ... done
# mysqlに接続
docker exec -it mysql_container mysql -u root -p
# DBに接続
use test_db;
# 初期データの確認
select * from test_table;
+----+------+
| id | name |
+----+------+
| 1 | john |
| 2 | alex |
| 3 | ben |
+----+------+
ディスカッション
コメント一覧
まだ、コメントがありません