Skip to content

Docker MySQL

Directory Structure

.
├── .env
├── docker-compose.yml
├── mysql
│   ├── Dockerfile
│   └── my.cnf
└── README.md

.env

MYSQL_DATABASE=***
MYSQL_USER=***
MYSQL_PASSWORD=***
MYSQL_ROOT_PASSWORD=***
MYSQL_PORT=***

DockerFile

dockerfile
FROM --platform=linux/x86_64 mysql:8.0-debian

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

RUN apt-get update && apt-get 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 LC_ALL ja_JP.UTF-8
ENV TZ Asia/Tokyo
ENV LANG=ja_JP.UTF-8

EXPOSE 3306
  • apt-get update パッケージリストを最新の状態にする。

  • apt-get install -y locales パッケージのインストール。

  • sed -i -e 's/# \(ja_JP.UTF-8\)/\1/' /etc/locale.gen \ コマンドで行を有効化。

  • local-gen ローケルを生成

  • update-locale LANG=ja_JP.UTF-8 システム全体のデフォルトロケール。

# C.UTF-8 UTF-8
# aa_DJ ISO-8859-1
# aa_DJ.UTF-8 UTF-8
# aa_ER UTF-8
# aa_ER@saaho UTF-8
# aa_ET UTF-8
# af_ZA ISO-8859-1
# af_ZA.UTF-8 UTF-8
...
ja_JP.UTF-8 UTF-8

 タイムゾーンの設定。

ENV LC_ALL ja_JP.UTF-8
ENV TZ Asia/Tokyo
ENV LANG=ja_JP.UTF-8

my.cnf

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

[client]
default-character-set=utf8mb4

[mysql]
default-character-set=utf8mb4

データベースファイルと設定ファイル(APT系)

項目ファイルまたはディレクトリ
データベースディレクトリvar/lib/mysql/
設定ファイル/etc/mysql/my.cnf
追加設定ファイル/etc/mysql/conf.d/mysql.cnf

docker-compose.yml

yml
version: "3.8"

services:
  mysql:
    build:
      context: ./mysql/
      dockerfile: Dockerfile
    image: docker-mysql
    volumes:
      - mysql_data:/var/lib/mysql/
    environment:
      MYSQL_DATABASE: ${MYSQL_DATABASE}
      MYSQL_USER: ${MYSQL_USER}
      MYSQL_PASSWORD: ${MYSQL_PASSWORD}
      MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD}
    ports:
      - "${MYSQL_PORT_HOST}:3306"

volumes:
  mysql_data:

データベースと設定ファイル

 起動する。

sh
docker compose up -d

 コンテナに入る。

sh
docker compose exec mysql /bin/bash

mysqlに接続

sh
mysql -u *** -p***
mysql>

mysqlコマンドクライアントの終了

exit
quit
\q