あっさりと

ソフトウェアや技術話など諸々

Dockerで開発環境構築 MySQL編

目的

気軽に使えるローカル開発環境としてDockerでMySQLをセットアップしてみた。
設定ポイントや気になった事を書き留める。

環境

作成内容はGitHubにアップしておいた。 github.com

docker-compose.yml

version: '3'
services:
  db:
    build: ./mysql
    env_file: ./mysql/.env
    environment:
      TZ: "Asia/Tokyo"
    volumes:
      - ./mysql/data/:/var/lib/mysql
      - ./mysql/logs/:/var/log/mysql
    ports:
      - "3306:3306"

Dockerfile

FROM mysql:5.7

RUN apt-get update
RUN apt-get install -y vim
# not root user
RUN useradd mysql_user
USER mysql_user
# add custom.cnf
COPY config/*.cnf /etc/mysql/conf.d
  • USERを指定した。
    MySQLプロセスもコンテナも指定したユーザー権限で動作する模様。
    (USER指定無しの場合はMySQLmysqlプロセス、コンテナ自体は root権限で動作する。)

  • ADDとCOPYはどちらも使えるけどADDはファイルコピー以外の機能も有るから、 単にファイル配置ならCOPYがシンプルで良いらしい

ユーザー権限

デフォルトではコンテナ自体はroot権限で動作する。
ローカル開発環境と割り切ればそれで問題無いのかも。

Docker のセキュリティ — Docker-docs-ja 17.06.Beta ドキュメント

もしくはuseraddしてsudo出来る状態にしているパターンも見かける。
(この場合dockerファイルにパスワードが書いてあったりするけど問題無いのだろうか)

この辺りは折を見て追調査していきたい。

MySQL cnf設定

MySQLの設定を幾つか実施してみた(詳しくはアップしているcnfファイルを確認してください)。
開発環境としては最低限以下を設定しておけば良さそう。

[mysql]
default-character-set=utf8mb4

[mysqld]
character-set-server=utf8mb4
collation-server=utf8mb4_bin

[client]
default-character-set=utf8mb4

SQLクライアントから接続

MySQL Workbenchから接続してみた。
127.0.0.1:3306に接続。
アカウント情報は.envで指定した内容。

gyazo.com

適当にテーブルを作成、Character Set とCollationが指定通りになっている事が確認出来る。

gyazo.com

以上