はじめに
こんにちは。山本です。業務やプライベートの勉強でローカル環境に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の場合はPowerShell、Linuxの場合はターミナルから下記のコマンドを実行します。
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環境を構築していただけると嬉しいです。