🐬

Dockerを使ってMySQLの環境を構築してみました

2023/05/04に公開

はじめに

こんにちは!ご訪問いただきありがとうございます!
Dockerを使った環境構築シリーズ第3弾です!

今回は、データベースへの理解を深めるため、Dockerを使ってMySQL 8.0の環境を構築しました。
本記事では、具体的な手順を追って、どのように環境を構築したのかを紹介します。

Dockerを使っての環境構築に関心をお持ちで、情報が足りず困っているという方のヒントになれば嬉しいです。

作業用ディレクトリの作成

まずは、任意の階層に作業用ディレクトリを作成します。

bash
mkdir mysql-study
ls
cd mysql-study
  • mkdir mysql-study
    作業用ディレクトリ(mysql-study)を作成
  • ls
    ファイルが作成されているかディレクトリの中身を確認
  • cd mysql-study
    作業用ディレクトリ(mysql-study)に移動

必要なファイルの準備

環境構築にあたり必要なファイルを準備します。

bash
touch Dockerfile docker-compose.yml .env
ls
code .
  • touch Dockerfile docker-compose.yml .env
    各ファイルをまとめて作成
  • ls
    ファイルが作成されているかディレクトリの中身を確認
  • code .
    VSCodeを開く(設定していない方はいつも通りの手順で開いてください)

.envの作成

環境変数を定義するためのファイルを作成します。

.env
MYSQL_ROOT_PASSWORD=mysql
MYSQL_DATABASE=mysql_study
MYSQL_USER=mysql
MYSQL_PASSWORD=mysql

Dockerfileの作成

Dockerfileを作成します。

Dockerfile
FROM mysql:8.0-debian
RUN apt-get update && \
    apt-get install -y locales
RUN locale-gen ja_JP.UTF-8
RUN localedef -f UTF-8 -i ja_JP ja_JP.UTF-8
ENV LANG=ja_JP.UTF-8
ENV TZ=Asia/Tokyo
  • FROM mysql:8.0-debian
    Dockerイメージとバージョンを指定
  • apt-get update
    パッケージリストを更新しより新しいバージョンのパッケージをインストールするための記述
  • apt-get install -y locales
    日本語を扱うために必要なパッケージをインストール
  • RUN locale-gen ja_JP.UTF-8
    日本語を扱うための記述
  • RUN localedef -f UTF-8 -i ja_JP ja_JP.UTF-8
    日本語を扱うための記述
  • ENV LANG=ja_JP.UTF-8
    環境変数LANGを設定するための記述
  • ENV TZ=Asia/Tokyo
    環境変数TZ(タイムゾーン)を設定するための記述

docker-compose.ymlの作成

docker-compose.ymlを作成します。

docker-compose.yml
version: '3.7'
services:
  db:
    build: .
    platform: linux/amd64
    ports:
      - 3306:3306
    volumes:
      - ./db/data:/var/lib/mysql
    environment:
      MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD}
      MYSQL_DATABASE: ${MYSQL_DATABASE}
      MYSQL_USER: ${MYSQL_USER}
      MYSQL_PASSWORD: ${MYSQL_PASSWORD}
  • version: '3.7'
    Docker Composeのバージョンを指定
  • services:
    セクション名
  • db:
    サービスの名前を設定
  • build: .
    ビルドするDockerfileのPathを指定
  • platform: linux/amd64
    Apple silicon搭載のMacで動作させるための記述
  • ports:
     - 3306:3306
    ホストマシンのポート3306をコンテナのポート3306にマッピングための記述
  • volumes:
     - ./db/data:/var/lib/mysql
    データの永続化のための記述
  • environment:
    • rootのパスワードを定義
    • データベースを定義
    • userを定義
    • userのパスワードを定義

コンテナの構築・起動

ターミナルに戻り、docker-compose.ymlファイルがあるディレクトリで下記のコマンドを入力し、コンテナをバックグラウンドで構築・起動します。(最初は結構時間がかかるかもしれません!)

bash
docker compose up -d

コンテナに入る

コンテナの構築・起動が完了したら、下記のコマンドを入力しコンテナに入ります。

bash
docker compose exec db bash

構築した環境を確認

.envに定義したパスワードを使用してMySQLにログインできたら環境構築は完了です。

bash
mysql -u root -p

コンテナの停止・削除・破棄

MySQLとコンテナから出て、削除・破棄をします。

bash
exit
exit
docker compose down
  • exit
    MySQLから出る
  • exit
    コンテナから出る
  • docker compose down
    コンテナを停止・削除・破棄する

終わりに...

ここまでご覧いただき、ありがとうございました。
Dockerを使用することでローカルマシーンをクリーンに保ちつつ、最適なMySQLの環境を手間なく構築することができます。
ぜひ、Dockerでの環境構築に困った時は、またこの記事まで戻ってきてください。

Discussion