HapInS Developers Blog

HapInSが提供するエンジニアリングの情報サイト

私のおすすめのDBの環境構築のやり方

はじめに

こんにちは。山本です。業務やプライベートの勉強でローカル環境にDBを用いた開発を行うことはありませんか?私のおすすめのDBサーバーの立ち上げ方とSQLクライアントを紹介します。

結論から言うとDBサーバーはDockerを使い、SQLクライアントはA5SQLを使います。

DBサーバー

最初にDockerを用いたDBサーバーの構築を説明します。

Dockerを皆さんはご存じでしょうか。コンテナ型の仮想環境の作成、実行ができるソフトウェアです。これを用いて、DBサーバーの仮想環境を構築します。

まず、Dockerをインストールします。
Windowsの場合はこちらからダウンロードしてください。
https://docs.docker.com/desktop/install/windows-install/

Ubuntuの場合はこれらのコマンドで入ります。簡単ですね。

curl -sSL https://get.docker.com | sh
sudo usermod -aG docker $USER
newgrp docker

次に、Dockerの動作確認を行います。
Windowsの場合はPowerShellLinuxの場合はターミナルから下記のコマンドを実行します。
Apache HTTP Serverが起動します。

docker run --rm -p 8080:80 httpd

localhost:8080にアクセスするとサーバーが立ち上がったことがわかります。

実行後にはCtrl+Cで止めることができないので直接PowerShellまたはターミナルを閉じます。

Dockerの弱点としてメモリを使いすぎるというのがあります。簡単にサーバーを立てられるのと引き換えにPCが重くなるのはいやです。そのため、Dockerの使うメモリの量を制限します。
Docker DesktopのWSL2を使っている場合は、C:\Users[ユーザー名]に.wslconfigファイルを作成し、下記のように記載します。

[wsl2]
memory=4GB

Dockerのメモリの上限を4GBに抑えることができます。読者の環境に応じてこの数字は変えてみてください。

再起動して適応すると、このようにメモリ使用率を抑えることができました。先ほどの設定を適応していないとメモリ使用率がこの2倍になったりします。

続いて、DBサーバーを立ち上げてみましょう。例としてPostgreSQLのサーバーを立てます。

まず、docker-compose.ymlを作成します。中身の説明はこちらを参考にしてください。

version: '3.1'

services:
  db:
    image: postgres:14 #イメージ名:バージョン
    ports:
      - 5432:5432 #外部からのアクセス時のポート:コンテナ内のポート
    restart: always #PCの再起動時に自動でコンテナが立ち上がるようにする
    environment:
      POSTGRES_DB: postgres #データベース名
      POSTGRES_USER: user #ユーザー名
      POSTGRES_PASSWORD: password #パスワード
    volumes:
      - ./data:/var/lib/postgresql/data #ボリューム:データベースファイルの場所
      - ./docker-entrypoint-initdb.d:/docker-entrypoint-initdb.d #コンテナの立ち上げ時に実行されるSQLの保存場所

次にdocker-compose.ymlと同じディレクトリにdocker-entrypoint-initdb.dというディレクトリを作成します。
その中にcreate.sqlを作成します。ここに書いたSQLがコンテナの立ち上げ時に実行されます。

CREATE TABLE products (
    product_no integer,
    name text,
    price numeric
);

ディレクトリはこのようになります。

では、コンテナを立ち上げます。docker-compose.ymlのあるディレクトリでPowerShellまたはターミナルを開いて下記のコマンドを実行します。

docker-compose up -d

DBサーバーが立ち上がりました。下記のコマンドで確認できます。

docker-compose ls

正しく起動しているとこのように表示されます。

NAME                STATUS              CONFIG FILES
db                  running(1)          C:\Users\XXX\docker-compose.yml

DBサーバーを停止するときは、下記のコマンドを叩きます。

docker-compose down

SQLクライアント

DBサーバーを立てたのでDBの中身を覗いてみます。
SQLクライアントのA5SQLをインストールします。
これは日本語であり、機能が豊富で使いやすいです。
特にSQLの整形機能が筆者は好きです。
https://forest.watch.impress.co.jp/library/software/a5sqlmk2/

A5SQLを開いて、「データベースの情報の再読み込み」を押下します。

「追加」を押下します。

下記のように入力します。パスワードはpasswordと入力してください。

このようにDBサーバーに接続でき、docker-entrypoint-initdb.dに配置したSQLが実行されテーブルが作成されたことが確認できます。

まとめ

Dockerを使うことで簡単にDBサーバーを立ち上げることができました。A5SQLも触ってみると分かりますが、かなり使いやすいです。業務やプライベートで開発するときはDBサーバーは必須だと思うので、この方法で、時間を掛けずにDB環境を構築していただけると嬉しいです。