3.DBAの設定
Mysqlの最新バージョンを検討もしましたが、認証の暗号化モジュールやDocker設定でまだはっきりしてないところがあったので、Mysqlと殆ど一緒で色々良いとの話があるmariaDBをいれることにしました。
docker-compose.ymlの設定だけでも使いますが、設定の柔軟性を考えてDockerFileを作成することにしました。
FROM mariadb MAINTAINER kugyon.i <fatty.rabbit.dev@gmail.com> # TimeZoneの設定のため RUN echo "USE mysql;" > /docker-entrypoint-initdb.d/timezones.sql && \ mysql_tzinfo_to_sql /usr/share/zoneinfo >> /docker-entrypoint-initdb.d/timezones.sql # TimeZoneの設定 RUN apt-get update && \ apt-get install -y tzdata RUN rm -rf /var/lib/apt/lists/* && \ echo "$TZ" > /etc/timezone && \ rm /etc/localtime && \ ln -s /usr/share/zoneinfo/Asia/Tokyo /etc/localtime && \ dpkg-reconfigure -f noninteractive tzdata EXPOSE 3306
タイムゾン等の設定です。DBAは3306ポートを公開する予定です。実際のDBで作成されるファイルをhostに持つ必要はないかなと思いまして、volumnsでマウントはしないつもりです。Macでの速度問題(参考)もあるので、書込みが多いDBファイルはvolumnsを使用しない方が良いとの判断です
[mysqld] character-set-server=utf8mb4 #default-time-zone = 'Asia/Tokyo' # slow query slow_query_log=1 long_query_time=1 slow_query_log_file=/var/log/mysql/slow_query.log [client] default-character-set=utf8mb4
こちらはmy.cnfの中身です。デモンが起動時に使うだけなので、volumnsでマウントしても影響はないと思います。
dba: image: dba-mariadb build: context: ./dba dockerfile: Dockerfile container_name: dba ports: - "3306:3306" volumes: - ./dba/my.cnf:/etc/my.cnf environment: MYSQL_ROOT_PASSWORD: 12345678 MYSQL_ROOT_HOST: "172.16.0.%" TZ: Asia/Tokyo restart: always logging: options: max-size: 5m max-file: "5" networks: test-server-net: ipv4_address: 172.16.0.3
こんな感じです。別途ネットワークを「172.16.0.*」で作成する予定です。既存DBAファイルが存在する場合、「MYSQL_ROOT_PASSWORD」の設定をしないルールは知っている方もいると思いますが、一応書いてみます。