0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

[裏話]Dockerを利用して自分だけのDB環境をつくってみた

Last updated at Posted at 2024-04-08

はじめに

本記事は、この記事を作成するにあたりわからなかった点や調べたことなどをまとめたものです。

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.genja_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をつけて実行する。

参考記事
dockerのmysqlでdocker-entrypoint-initdb.dが実行されない問題の対応

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?