このページで解説している内容は、以下の YouTube 動画の解説で見ることができます。

Docker超入門:Docker ComposeでPostgreSQLコンテナを構築する方法

🐘 Docker ComposeでPostgreSQLコンテナを構築する方法

 ここでは Docker Compose を使って、人気のデータベースシステム PostgreSQL(ポストグレスキューエル) をコンテナ化する方法を紹介します。
Docker Composeを使えば、たった数行の設定でデータベース環境を簡単に構築できます!

ここで学ぶ内容

💡 PostgreSQLとは?

 PostgreSQL(ポストグレスキューエル) は、オープンソースの高機能なリレーショナルデータベース(RDBMS)です。
大学の研究プロジェクトから誕生した歴史あるソフトウェアで、世界中の開発者に愛されています。

項目内容
開発起源カリフォルニア大学バークレー校「Postgresプロジェクト」
名前の由来“Post-Ingres”(Ingresの後継)
主な特徴ACID準拠・同時実行制御・トランザクション・拡張性
対応言語SQL, PL/pgSQL, Python, C, Perl など
公式サイトhttps://www.postgresql.org/

URL:https://www.postgresql.org/

💬 ポイント
PostgreSQLは「堅牢・信頼性・拡張性」の三拍子が揃ったDBMSです。
Webアプリ、モバイルアプリ、業務システム、データ分析基盤など、どんな用途にも対応できます。

🧹 まずは不要なDockerオブジェクトを削除!

作業前に、古いコンテナや不要なキャッシュを削除しておくとスムーズです。
以下のコマンドを実行しましょう。

docker system prune -a --volumes
オプション説明
-a使用していないすべてのコンテナ・イメージ・ネットワークを削除
--volumes未使用のボリュームも削除(必要に応じて使用)

実行後に
Are you sure you want to continue? [y/N] と聞かれるので、
y と入力して進めます。

💬 補足
このコマンドはクリーンアップ用です。
環境によっては削除されないオブジェクトもあるので、その場合は手動で削除してOKです。

実行結果

PS C:\Users\joeac> docker system prune -a --volumes
WARNING! This will remove:
  - all stopped containers
  - all networks not used by at least one container
  - all anonymous volumes not used by at least one container
  - all images without at least one container associated to them
  - all build cache

Are you sure you want to continue? [y/N] y

📁 compose.yaml の準備

Docker Composeを使うには、設定ファイル「compose.yaml」を作成します。

1️⃣ 作業ディレクトリを作成

cd desktop/docker
mkdir postgresql
cd postgresql

実行結果

PS C:\Users\joeac> cd desktop/docker
PS C:\Users\joeac\Desktop\docker> mkdir postgresql

    Directory: C:\Users\joeac\Desktop\docker

Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
d----          2025/10/16     0:46                postgresql

PS C:\Users\joeac\Desktop\docker> cd postgresql
PS C:\Users\joeac\Desktop\docker\postgresql>

2️⃣ VSCodeを起動

code compose.yaml

これで compose.yaml を編集する準備ができました!

🧾 compose.yamlの内容

以下の設定をVS Codeに貼り付けて保存します👇

services:
  postgres:
    image: postgres:14.2
    container_name: postgres_container
    environment:
      POSTGRES_DB: test-db
      POSTGRES_USER: test-user
      POSTGRES_PASSWORD: test-pass
    volumes:
      - db-data:/var/lib/postgresql/data

volumes:
  db-data:

⚙️ 設定内容の解説

項目説明
servicesコンテナとして起動するサービスを定義するセクション。ここでは postgres のみ。
image使用するDockerイメージ(postgres:14.2)を指定。
container_nameコンテナ名を指定(postgres_container)。
environment環境変数を指定し、DB初期設定を自動化。
POSTGRES_DB作成するデータベース名。
POSTGRES_USER作成するユーザー名。
POSTGRES_PASSWORDユーザーのパスワード。
volumes永続化データの保存場所を指定。db-data にDBファイルを保存。

💬 ポイント
PostgreSQLは /var/lib/postgresql/data にデータを保存します。
このディレクトリをホストボリューム db-data にマウントすることで、
コンテナを削除してもデータが残る仕組みです。

🚀 コンテナの作成と実行

設定が完了したら、次のコマンドでコンテナを起動します。

docker compose up -d
オプション説明
upcompose.yamlを基にコンテナを作成・起動する
-dバックグラウンドで実行(detachedモード)
PS C:\Users\joeac\Desktop\docker\postgresql> docker compose up -d
[+] Running 14/14
(省略)
[+] Running 3/3
 ✔ Network postgresql_default    Created                                         0.1s
 ✔ Volume postgresql_db-data     Created                                         0.0s
 ✔ Container postgres_container  Started                                         1.1s
PS C:\Users\joeac\Desktop\docker\postgresql>

💬 補足
Docker Composeは自動的にネットワークを作成し、
postgres_container をその中で実行します。

💻 PostgreSQLコンテナへの接続

起動したコンテナに接続して、内部操作を行ってみましょう。

コンテナにログインする

docker compose exec postgres /bin/bash
コマンド要素説明
docker composeComposeを使ったコンテナ操作コマンド
execコンテナ内でコマンドを実行
postgres実行対象のサービス名
/bin/bashコンテナ内でbashシェルを起動

実行すると、コンテナ内のシェルに入ります。

PS C:\Users\joeac\Desktop\docker\postgresql> docker compose exec postgres /bin/bash
root@95812dd0bfae:/#

🧠 PostgreSQLデータベースへ接続

PostgreSQLコンテナ内から、データベースに接続してみましょう。

psql -U test-user -d test-db
オプション説明
-Uユーザー名を指定
-dデータベース名を指定

実行後、下のように表示されれば接続成功です👇

root@95812dd0bfae:/# psql -U test-user -d test-db
psql (14.2 (Debian 14.2-1.pgdg110+1))
Type "help" for help.

test-db=#

💬 補足
「test-db=#」と表示されていれば、
PostgreSQLの対話モード(psql)に入っています。

🔚 接続の終了

作業を終えたら、順に終了していきます。

1️⃣ psqlを終了

\q

実行結果

test-db=# \q
root@95812dd0bfae:/#

2️⃣ bashシェルを終了

exit

実行結果

root@95812dd0bfae:/# exit
exit

3️⃣ PowerShellのプロンプトに戻ります。

PS C:\Users\joeac\Desktop\docker\postgresql>

🧩 まとめ

これで PostgreSQLコンテナ の構築は完了です!✨
Docker Composeを使えば、環境構築が本当にスムーズになります。

ステップ内容
1️⃣不要なオブジェクト削除(docker system prune -a)
2️⃣compose.yaml作成
3️⃣docker compose up -d で起動
4️⃣docker compose exec postgres /bin/bash でログイン
5️⃣psql -U test-user -d test-db で接続

💬 ひとことまとめ

Docker Composeを使えば、PostgreSQLのセットアップはわずか数分!
環境の初期化・再構築も超カンタンです🎉