ゴール
・DockerでMySQLを起動する
・初期データを投入する
・コンテナ外部から接続する
早速やってみましょー
1. docker-compose.ymlを作成
version: '3'
services:
db:
image: mysql:latest
ports:
- "3306:3306"
volumes:
- ./data:/var/lib/mysql
- ./db/my.cnf:/etc/mysql/conf.d/my.cnf
- ./script:/docker-entrypoint-initdb.d
environment:
MYSQL_DATABASE: sample
MYSQL_USER: dbuser
MYSQL_PASSWORD: password
MYSQL_ROOT_PASSWORD: password
- mysqlの最新バージョンを取得する
- ./dataのデータを/var/lib/mysql配下にマウントする
- 初回起動時になければ勝手に作成してくれる
- ./db/my.cnfを/etc/mysql/conf.d/my.cnfにマウントする
- ./scriptを/docker-entrypoint-initdb.dにマウントする
- このディレクトリ配下にある.sqlファイルがMySQL初回起動時に実行される
- 実行順序はASCIIコード順。以下のような具合
- 01_create_table.sql
- 02_insert_data.sql
- 環境変数に以下の4つを指定する
- 初回起動時に作成するDatabase : sample
- 初回起動時に作成するUser : dbuser
- Userのパスワード : password
- Rootユーザのパスワード : password
2.my.cnfを作成
[mysqld]
character-set-server=utf8
[client]
default-character-set=utf8
文字コードをutf8に設定してます
3.MySQL起動!
docker-compose up -d
で起動できまーす!-d
のオプションをつけることで、バックグラウンド起動になります。
コンテナ一覧を確認!docker ps
を実行しましょう
CONTAINER ID / IMAGE / COMMAND / CREATED / STATUS / PORTS / NAMES
が表示されます!
4.接続!
CLI接続
Terminalで docker exec -it {CONTAINER ID} /bin/bash
を実行しましょう。これでコンテナに入れます。mysql -uroot -p
でMySQLにログインします。
パスワードはdocker-compose.ymlに指定したものです。
外部から接続
host : 127.0.0.1
User : root
Pass : docker-compose.ymlに設定したもの
Port : 3306
上記設定で接続可能です!