0
0

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 Compose】Dockerfile から MySQL コンテナを作成する

Last updated at Posted at 2024-07-28

はじめに

この記事では、Docker Compose を使って Dockerfile から MySQL コンテナを作成する手順について記載します。

開発環境

開発環境は以下の通りです。

  • Windows11
  • Docker Engine 27.0.3
  • Docker Compose 2
  • MySQL 9.0.0

Dockerfile の作成

今回は以下の要件を満たす Dockerfile を作成します。

  • タイムゾーンが日本
  • クエリログが出力される

最初にベースイメージを選択します。今回は、2024年7月時点で latest タグと同等の 9.0.0 にします。

FROM mysql:9.0.0

次にタイムゾーンを日本に設定するインストラクションを追加します。

# ENV <key>=<value> ...
ENV TZ=Asia/Tokyo

最後にログの出力設定をします。
まずはホストマシンで MySQL サーバー設定ファイルを作成します。

my.cnf
[mysqld]
general_log = 1
general_log_file = /var/log/query.log

作成したファイルをコンテナにコピーするインストラクションを追加します。

# COPY [OPTIONS] <src> ... <dest>
COPY ./my.cnf /etc/my.cnf

Dockerfile が完成しました。

FROM mysql:9.0.0

# ENV <key>=<value> ...
ENV TZ=Asia/Tokyo

# COPY [OPTIONS] <src> ... <dest>
COPY ./my.cnf /etc/my.cnf

compose.yaml の作成

compose.yaml を作成します。

compose.yaml
services:
  db:
    build: .
    container_name: "db-container"
    environment:
      - MYSQL_ROOT_PASSWORD=password
    ports:
      - "3306:3306"
  • build : Dockerfile ファイルのパス(Dockerfile からイメージをビルド)
  • container_name : コンテナ名を明示的に指定
  • environment : MySQL のルートパスワード
  • ports : 公開するポート

動作確認

準備ができたので、動作確認をします。

コンテナの起動確認

まずはイメージをビルドして、コンテナを起動します。

docker compose up --build --detach

image.png
image.png

コンテナの起動状況を確認します。

docker container ls

コンテナ名 db-container が起動しています。

image.png

タイムゾーンの確認

次は MySQL に接続してタイムゾーンを確認します。
MySQL に接続します。

mysql --host=127.0.0.1 --port=3306 --user=root --password=password

image.png

現在時刻を確認します。

select now();

日本の時刻になっています。

image.png

タイムゾーンの設定を確認します。

show variables like '%time_zone%';

JST になっています。

image.png

ログの確認

MySQL サーバー設定ファイル(my.cnf)で設定した query.log ファイルの存在を確認します。

docker container exec db-container ls /var/log

image.png

query.log ファイルの末尾5行を確認します。

docker container exec db-container tail -n 5 /var/log/query.log

タイムゾーンの確認時に実行したクエリが表示されています。

image.png

参考

関連

0
0
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
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?