MySQL
docker
docker-compose

Dockerでローカル開発環境用MySQLサーバを動かす

docker-composeを使うことで
ローカル開発環境用のMySQLの
起動&DBの初期化(テーブル作成&初期データ投入)を1コマンドで実行できます

構成ファイルをgitリポジトリで管理することで、
開発者各自がローカル開発環境のDBを簡単に最新化できるようになり
開発効率の向上も期待できるのではないでしょうか

サンプルをGithubで公開しました
https://github.com/rkunihiro/docker-development-db

ファイル構成と内容

ディレクトリ構成
|
+-- conf … MySQLコンテナの設定ファイルディレクトリにマウントされるディレクトリ
|    |
|    +-- custom.cnf … MySQLの設定ファイル
|
+-- init … MySQLテーブル作成&初期投入データSQL
|    |
|    +-- 00-create-tables.sql … テーブル作成SQL
|    |
|    +-- 01-fixture.sql … 初期データ投入SQL
|
|-- logs … MySQLコンテナのログ出力ディレクトリにマウントされるディレクトリ
|
+-- docker-compose.yml

docker-compose.yml
version: '3.2'

services:

  mysql: # Mysql container
    container_name: development-mysql
    image: mysql:5.7
    restart: always
    volumes:
      - ./conf:/etc/mysql/conf.d
      - ./logs:/var/log/mysql
      - ./init:/docker-entrypoint-initdb.d
    environment:
      MYSQL_ROOT_PASSWORD: rootPassword
      MYSQL_DATABASE: sample
      MYSQL_USER:     test
      MYSQL_PASSWORD: passwd
      TZ: Asia/Tokyo
    ports:
      - 3306:3306

  pma: # phpMyAdmin container
    container_name: development-pma
    image: phpmyadmin/phpmyadmin:latest
    restart: always
    environment:
      PMA_USER: root
      PMA_PASSWORD: rootPassword
    ports:
      - 8080:80
    links:
      - mysql:db

使い方

ターミナルアプリケーションを起動し
docker-compose.ymlファイルがあるディレクトリに移動して以下のコマンドを実行します

起動

$ docker-compose up -d

一時停止

$ docker-compose stop

phpMyAdminを使う

  • Webブラウザで http://localhost:8080/ にアクセス

開発中のプログラムからDocker上のMySQLに接続する設定

設定項目 設定値
Host localhost
Port 3306
DB sample
User test
Pass passwd
  • 変更していない場合の設定値です

テーブル構成やデータの修正時

  • initディレクトリ配下のSQLを修正する
    • phpMyAdminを使用してエクスポートした物をSQLファイルに上書きするなど
  • 下記の再起動コマンドを実行

DB名や接続ユーザ名・パスワードを変更

  • docker-compose.yml
    MYSQL_DATABASE,MYSQL_USER,MYSQL_PASSWORDを変更
  • 下記の再起動コマンドを実行

再起動 (設定ファイルやSQLを修正した/更新された場合)

$ docker-compose down

$ docker-compose up -d

その他、不明点などありましたらコメントにてお寄せください