はじめに
本記事は、この記事を作成するにあたりわからなかった点や調べたことなどをまとめたものです。
Dockerfile
FROM mysql:8.0-debian
apt-getを使いたいのでdebianのもの、かつ記述時点でなるべく新しいものを指定した。
# set timezone
ENV TZ=Asia/Tokyo
タイムゾーンを日本時間にする。
RUN apt-get update
RUN apt-get install -y locales
RUN echo "ja_JP.UTF-8 UTF-8" > /etc/locale.gen && \
locale-gen
ENV LANG=ja_JP.UTF-8
日本語が使用できるようにする設定。
/etc/locale.gen
にja_JP.UTF-8
がコメントアウトされて記述されているため、コメントアウトなしのja_JP.UTF-8
で上書きする。
# cat /etc/locale.gen
# This file lists locales that you wish to have built. You can find a list
# of valid supported locales at /usr/share/i18n/SUPPORTED, and you can add
# user defined locales to /usr/local/share/i18n/SUPPORTED. If you change
# this file, you need to rerun locale-gen.
# C.UTF-8 UTF-8
# aa_DJ ISO-8859-1
# aa_DJ.UTF-8 UTF-8
〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
# ja_JP.EUC-JP EUC-JP
# ja_JP.UTF-8 UTF-8
〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
# zh_TW.UTF-8 UTF-8
# zu_ZA ISO-8859-1
# zu_ZA.UTF-8 UTF-8
locale-gen
コマンドを実行して、/etc/locale.gen
に記述されている言語を使用できるようにする。(ロケールの生成)
参考記事
Dockerでapt-get: command not foundエラーの解消法
DockerのMySQLで日本語が使えない!?
ロケール設定を確認する・変更する方法
compose.yaml
いつもdocker-compose.yml
として作成・記述していたが、compose.yaml
とするのが推奨されているらしい。
また、最上位のversionの記述(一行目にversion: '3.1'
とか書くやつ)は非推奨のようだ。
services:
下に起動するコンテナ(=サービス)の設定を記述する。
サービスは複数設定でき、サービス名(今回はdb
)は任意の名前がつけられる。
container_name: mydb
は、そのサービスのコンテナ名を指定している。
デフォルトでは「プロジェクト名-サービス名-インデックス番号」となる。
コンテナ名の重複はできない。
build: .
で、カレントディレクトリのDockerfile
を使用することを示している。
environment:
は、環境変数を指定している。
volumes:
で、ボリュームの指定をしている。
今回は、./init:/docker-entrypoint-initdb.d
で、ホスト側のカレントディレクトリのinit
ディレクトリと、コンテナ側の/docker-entrypoint-initdb.d
をバインドマウントしている。
参考記事
雰囲気でDocker Composeを触っている状態から脱するために調べたこと(2023)
docker compose up -p mydb --build -d
-p mydb
はプロジェクト名をmydb
に指定している。デフォルトはディレクトリ名。
複数環境立ててそれぞれを管理したい場合などに使われるそう。
--build
を設定することでコンテナ起動前にイメージをビルドする。
-d
はデタッチド・モード。
バックグラウンドでコンテナを起動してくれる。
docker compose down
今回は/var/lib/mysql
にマウントしていないため、これだけでOK。
/var/lib/mysql
にマウントしている場合は、そのボリュームのデータも消す必要があるため--volume
をつけて実行する。