DockerでMySQL起動!

Docker

ゴール
 ・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

上記設定で接続可能です!