0
0

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 3 years have passed since last update.

Docker ComposeのMySQLに初期データを設定する

Posted at

初期データ

initdb.dフォルダを作成してinit.sqlpet.txtを配置する。

init.sqlの内容はテーブル削除、作成データ挿入を記述

init.sql
drop table if exists pet;
create table if not exists pet (
       name varchar(20)
       , owner varchar(20)
       , species varchar(20)
       , sex char(1)
       , birth date
       , death date
);
load data local infile '/docker-entrypoint-initdb.d/pet.txt' into table pet;

pet.txtの内容はテーブルに挿入するデータをcsv形式で記述

pet.txt
Fluffy	Harold	cat	f	1993-02-04	\N
Claws	Gwen	cat	m	1994-03-17	\N
Buffy	Harold	dog	f	1989-05-13	\N
Fang	Benny	dog	m	1990-08-27	\N
Bowser	Diane	dog	m	1979-08-31	1995-07-29
Chirpy	Gwen	bird	f	1998-09-11	\N
Whistler	Gwen	bird	\N	1997-12-09	\N
Slim	Benny	snake	m	1996-04-29	\N

設定

docker-compose.ymlvolumesに初期データフォルダを記述する。
ローカルのinitdb.dフォルダをコンテナ内にdocker-entrypoint-initdb.dフォルダで配置する。
dockerhub - mysql

docker-compose.yml
version: '3.8'

services:
  mysql:
    image: mysql:5.7
    ports:
      - "3306:3306"
    volumes:
      - db_data:/var/lib/mysql
      - ./initdb.d:/docker-entrypoint-initdb.d
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: root
      MYSQL_DATABASE: my_test
      MYSQL_USER: mysql
      MYSQL_PASSWORD: mysql

volumes:
  db_data: {}

起動

いつも通りにコンテナを起動する。

$ docker-compose up -d

終わり

起動後にデータを入れ直す

コンテナをdown --volumesして再度upすれば良いんだろうけど。。。
別の方法と言うことで、

コンテナ内に入る。

$ docker-compose exec mysql /bin/bash

コンテナ内でmysqlコマンドをバッチモードで実行する。

# mysql -u mysql --password=mysql my_test < /docker-entrypoint-initdb.d/init.sql

コンテナ内から出る。

# exit

ほんとに終わり

0
0
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
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?