クリエイター:メタボ兔

ウェブやアプリの開発者で利用する色な技術やサーバーや開発環境の設定について共有する場

3.DBAの設定

Mysqlの最新バージョンを検討もしましたが、認証の暗号化モジュールやDocker設定でまだはっきりしてないところがあったので、Mysqlと殆ど一緒で色々良いとの話があるmariaDBをいれることにしました。

f:id:FattyRabbit:20201229184028p:plain

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」の設定をしないルールは知っている方もいると思いますが、一応書いてみます。

  • MYSQL_ROOT_PASSWORD:既存DBAファイルが存在する場合、「MYSQL_ROOT_PASSWORD」の設定をしないルールは知っている方もいると思いますが、一応書いてみます。
  • MYSQL_ROOT_HOST:基本的にhost含めて「172.16.0.%」のみrootの接続を許可したい入れてみました。