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指定無しの場合はMySQLはmysqlプロセス、コンテナ自体は 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で指定した内容。
適当にテーブルを作成、Character Set とCollationが指定通りになっている事が確認出来る。
以上