Dockerを使用したPostgreSQL環境の構築
この記事では、Dockerを使用してPostgreSQL環境を作成する手順を説明します。PostgreSQLはもっとも人気のあるオープンソースのリレーショナルデータベース管理システムの一つです。Dockerを使用することで、ホストOS上にPostgreSQLサーバーを手動でインストールや設定する手間を省き、開発やテストの目的で素早くPostgreSQLサーバーをセットアップすることができます。
docker-compose.ymlの設定
まず、PostgreSQLサーバーコンテナを作成するために、docker-compose.yml
ファイルを作成します。このファイルには、Docker HubからPostgreSQLイメージを取得し、新しいPostgreSQLコンテナを作成し、必要な環境変数を設定するための必要な構成が含まれます。
以下がdocker-compose.yml
ファイルの例です。
version: '3'
services:
db:
image: postgres:14
container_name: postgres
ports:
- 5432:5432
volumes:
- db-store:/var/lib/postgresql/data
environment:
- POSTGRES_DB=postgres
- POSTGRES_USER=postgres
- POSTGRES_PASSWORD=passw0rd
volumes:
db-store:
PostgreSQLコンテナの起動
docker-compose.yml
ファイルが設定されたら、PostgreSQLサーバーコンテナを起動できます。Docker Composeを使用すると、たった1つのコマンドでアプリケーションのサービスを管理することができます。ターミナルで、docker-compose.yml
ファイルがあるディレクトリに移動し、次のコマンドを実行します。
$ docker compose up -d
PostgreSQLサーバーコンテナが起動していることを確認するために、docker ps
コマンドを使用することができます。このコマンドは実行中のDockerコンテナを全てリストします。以下はコマンドと期待される出力です。
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
da5beb67905a postgres:14 "docker-entrypoint.s…" 9 minutes ago Up 9 minutes 0.0.0.0:5432->5432/tcp postgres
PostgreSQLコンテナが実行されていることを確認したら、docker exec
コマンドを使用してPostgreSQLコンテナのシェルにアクセスすることができます。
$ docker exec -it postgres /bin/sh
#
PostgreSQLコンテナの中に入ったので、PostgreSQLサーバーに接続するためにPostgreSQLクライアントCLIを使用できます。rootユーザーとして接続するには、次のコマンドを使用します。
# psql -h localhost -U postgres
psql (14.8 (Debian 14.8-1.pgdg120+1))
Type "help" for help.
postgres=#
PostgreSQLの操作
PostgreSQLサーバーに接続したら、テーブルの作成、データの挿入、データのクエリなど、さまざまなデータベース操作を行うことができます。以下は、テーブルの作成、データの挿入、そしてデータの取得の例です。
postgres=# create table test(id int, name varchar(10));
CREATE TABLE
postgres=# insert into test(id, name) values (1,'john');
INSERT 0 1
postgres=# select * from test;
id | name
----+------
1 | john
(1 row)
クリーンアップ
操作が終了したら、PostgreSQLの接続を終了します。
postgres=# exit
#
このコマンドにより、PostgreSQLサーバーからログアウトします。
PostgreSQLの接続を終了した後、Dockerコンテナのシェルに戻ります。exit
でDockerコンテナを終了させます。
# exit
不要なリソースを消費しないようにするために、使用が終わったらDockerコンテナを停止し、削除した方が良いです。次のコマンドを使用してDockerコンテナを停止し、削除します。
$ docker compose down
[+] Running 2/2
⠿ Container postgres Removed 2.8s
⠿ Network my_proj_default Removed