コンテンツにスキップ

MySQL

MySQL

MySQL は MySQL の Docker イメージである。

Docker Compose

CLI から日本語が入力できないので日本語向けに設定している。

1
2
3
4
5
6
7
.
├── docker-compose.yml
├── docker-entrypoint-initdb.d
│   └── 01_create_table.sql
└── mysql
    ├── Dockerfile
    └── my.cnf
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
services:
  mysql:
    image: mysql:8.0.39-debian
    build:
      context: ./mysql
      dockerfile: Dockerfile
    ports:
      - 3306:3306
    restart: always
    environment:
      - MYSQL_DATABASE=$MYSQL_DATABASE # オプション。イメージ起動時に作成するデータベース名。
      - MYSQL_USER=$MYSQL_USER # オプション。初期ユーザーの名前。
      - MYSQL_PASSWORD=$MYSQL_PASSWORD # オプション。初期ユーザーのパスワード。ここで作成したユーザにはMYSQL_DATABASEで指定したDBへのGRANT ALL権限が付与されるらし    い。
      - MYSQL_ROOT_PASSWORD=$MYSQL_ROOT_PASSWORD # 必須。ログインする際のパスワード。
      - TZ=$TZ # タイムゾーンの設定。
    volumes:
      - ./docker-entrypoint-initdb.d:/docker-entrypoint-initdb.d # docker-entrypoint-initdb.dディレクトリ内のスクリプトがコンテナ起動時に実行される。
      - ./mysql/var/lib/mysql:/var/lib/mysql # データを永続化する。
1
2
3
4
5
MYSQL_DATABASE=db
MYSQL_USER=user
MYSQL_PASSWORD=password
MYSQL_ROOT_PASSWORD=password
TZ=Asia/Tokyo
1
2
3
4
5
6
7
[mysqld]
default-time-zone='+9:00'
character-set-server=utf8
collation-server=utf8_unicode_ci

[client]
default-character-set=utf8
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
# debianで終わるタグでないとaptコマンドが動かない
FROM mysql:8.0.39-debian

COPY my.cnf /etc/mysql/conf.d/my.cnf

# 日本語環境を追加
RUN apt update && apt install -y locales \
    && sed -i -e 's/# \(ja_JP.UTF-8\)/\1/' /etc/locale.gen \
    && locale-gen \
    && update-locale LANG=ja_JP.UTF-8

ENV LANG=ja_JP.UTF-8
# ここまで

CMD ["mysqld"]