🚛

Docker で使い捨て DB 環境の構築してみる

2022/01/23に公開

はじめに

DB の勉強のために使い捨ての環境でクエリをサクッとお試ししたいときってありますよね?こちらでは Docker を用いてコマンド1発で DB 環境(PostgreSQL, MySQL)を構築するために手順について記載します!

実際に定義が書かれている GitHub リポジトリのリンクはこちらです。

最初にコマンド1発で各 DB の環境構築を行う方法について記載します。

MySQL の環境構築をする場合

以下のコマンドを実行することで環境構築を行えます。

  • 初回

    git clone https://github.com/ryoshindo/db-catchup.git \
    && cd db-catchup/mysql \
    && docker-compose up --build
    
  • 2回目以降

    docker-compose up
    

PostgreSQL の環境構築をする場合

以下のコマンドを実行することで環境構築を行えます。

  • 初回

    git clone https://github.com/ryoshindo/db-catchup.git \
    && cd db-catchup/postgresql \
    && docker-compose up --build
    
  • 2回目以降

    docker-compose up
    

このように各 DB 環境をコマンド1発で起動することが可能です!その他のコマンドの扱い方については後ほど記載します。

⚠️この記事を読んでわかる・わからないこと⚠️

こちらではサーバーの起動方法に絞って記載しているため、DB についてより深く知りたい方は他記事をお読みください 🙇‍♂️

  • わかること
    • MySQL, PostgreSQL サーバーの起動・停止・初期化方法
  • わからないこと
    • 各ファイルの細かいチューニング方法
    • クエリの書き方

詳細

ここでは DB 設定をカスタマイズする際の助けになればという思いでファイル構成や各 DB へのログイン方法などについて記載します。

ディレクトリ構成

こちらでは MySQL と PostgreSQL の構築方法を記載します。したがって各 DB の構築設定を1つの GitHub リポジトリにまとめているので以下のようなディレクトリ構成となっています。

db-catchup
├── .gitignore
├── mysql
│   ├── .gitignore
│   ├── docker-compose.yml
│   ├── initdb.d
│   │   └── init.sql
│   └── my.cnf
└── postgresql
    ├── docker-compose.yml
    └── initdb.d
        └── init.sql

もし、MySQL のみの環境構築する際は mysql/ ディレクトリ以下、PostgreSQL のみの環境構築する際は postgresql/ ディレクトリ以下のみをコピーすれば問題なく動作します。

初期実行クエリ

初期設定として実行するクエリは initdb.d/ ディレクトリ以下にクエリを作成します。こちらの記事では例として init.sql という SQL ファイルを用意しました。こちらにクエリを書くことで、docker-compose up --build コマンドを実行したタイミングで initdb.d/ ディレクトリ以下のすべての SQL ファイルのクエリが実行されます。例えば、テーブルの作成を行う場合はこちらでクエリを記載することが多いです。

例えば、以下のようなテーブル作成のクエリを init.sql では定義します。

CREATE TABLE products (
    id INTEGER,
    name TEXT,
    price NUMERIC
);

DB サーバーコンソールへのログイン

DB コンソールにログインする際は以下のコマンドを実行します。SELECT などクエリを実行する際はコンソールにログインしたうえで実行します。
コマンドの実行は各 DB のディレクトリに移動したうえで実行してください。

MySQL サーバーコンソールへのログイン

以下のコマンドでサーバーを起動します。

docker-compose up

サーバーを起動後、30秒〜1分後に以下の表示がされます。

db_1  | Version: '5.7.35'  socket: '/var/run/mysqld/mysqld.sock'  port: 3306  MySQL Community Server (GPL)

上記が表示されたら以下のコマンドでコンソールにログインします。

docker-compose exec db mysql -u root -pdev

PostgreSQL サーバーコンソールへのログイン

以下のコマンドでサーバーを起動します。

docker-compose up

サーバーを起動後、30秒〜1分後に以下の表示がされます。

db_1  | 2022-01-23 11:32:34.383 UTC [1] LOG:  database system is ready to accept connections

上記が表示されたら以下のコマンドでコンソールにログインします。

docker-compose exec db psql -U root app

DB サーバーの停止

docker-compose コマンドを実行したコンソールで Control キー + C キーの同時押し

DB サーバーの初期化

以下のコマンドを実行することで docker で起動したサーバーが完全に終了し、初期化されます。

docker-compose down

まとめ

こちらの記事では MySQL, PostgreSQL サーバーを docker を用いてコマンド1発で起動する方法について記載しました。
初期の勉強では DB に限らず、docker を用いてガシガシ使い捨ての環境を構築して作っては壊してを繰り返して行きたいですね!
それではこの辺で〜 👋

GitHubで編集を提案

Discussion