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