PostgreSQL環境構築(Docker+postgresql-sandbox)
概要
- 日程: Day 1 / セッション 2
- 時間: 9:30-10:15
- 形式: 実習
- ゴール: docker-composeでpostgresql-sandboxを起動し、psqlコマンドで接続して
\dtでテーブル一覧を表示できる - 学習形式: ハンズオン実習(AIサポートあり)
導入(5分)
前のセッションでは「データベースは業務用の入れ物」という景色が見えてきました。今度はその入れ物を、自分のPC上に本当に立ち上げてみます。
ここで少し考えてみてください。本物のPostgreSQLを動かすには、普通ならインストール作業、設定ファイルの編集、サンプルデータの投入と、けっこうな手順が必要です。それを「全部おまかせの箱」にしてくれるのが Docker と、研修用に用意された postgresql-sandbox というリポジトリです。
このセッションのゴールはひとつ、「自分のPCの中でPostgreSQLが動いている」という小さな成功体験です。動いたら拍手してください。
本編(35分)
1. 前提:dockerとgitが入っているか確認する
まずは道具の確認です。料理を始める前に包丁とまな板を出すのと同じです。今回の実習に必要なのは2つだけです。
- git: GitHubからソースコードを取ってくる道具
- docker: PostgreSQLを「箱ごと」起動する道具
コード例・実例
ターミナルを開いて、次の2つを実行してください。
git --version
docker --version
どちらもバージョン番号が表示されればOKです。command not found と出た場合は、AIに「macOS(またはWindows)で git / docker をインストールする手順を教えて」と聞いてみましょう。
ここがポイント
- バージョン番号が出れば、それだけで合格です。新しさは気にしなくて大丈夫
- Dockerは「Docker Desktop」を起動しておく必要があります(クジラのアイコンが常駐していればOK)
2. postgresql-sandboxを取ってくる
道具がそろったら、研修用の箱を取りに行きます。これは、いわばレンタルキッチンの予約のようなものです。すでに必要な調理器具と食材が揃った部屋を借りるイメージです。
コード例・実例
任意の作業フォルダで、次のコマンドを順に実行します。
git clone https://github.com/shinoburc/postgresql-sandbox.git
cd postgresql-sandbox
ls
docker-compose.yml というファイルが見えていれば成功です。これがPostgreSQLを起動する設計図です。
ここがポイント
git cloneは1回だけで済みます。2回目以降はcd postgresql-sandboxで入るだけ- 場所を忘れたら
pwdで今いるフォルダを確認できます
3. PostgreSQLを起動する
設計図が手に入ったので、いよいよPostgreSQLを起動します。コマンドは1行だけです。
コード例・実例
docker compose up -d
-d はバックグラウンドで動かす指定です。done や started といったメッセージが流れて、コマンドが終わればOKです。
念のため、起動状態を確認します。
docker compose ps
postgres-sandbox という名前のコンテナが running(または Up)になっていれば、PostgreSQLは今この瞬間、皆さんのPCの中で動いています。
ここがポイント
- 初回は数十秒〜数分かかります。イメージのダウンロードのためです
- 2回目以降は数秒で立ち上がります
コラム
Dockerのアイコンがクジラなのは、コンテナ船のメタファーから来ています。コンテナ(コンピュータの「箱」)を運ぶクジラ、というわけです。ちなみに過去のDockerのマスコットは「Moby Dock」という名前で、小説『白鯨』の主人公モビー・ディックのパロディでした。日々何気なく見ているあの可愛いクジラの中身は、実は19世紀の海洋文学だったのです。
4. psqlでPostgreSQLに接続する
PostgreSQLは動き始めましたが、まだ会話はしていません。会話の入口が psql というコマンドラインツールです。
コード例・実例
次のコマンドで接続します。
docker exec -it postgres-sandbox psql -U postgres -d sandbox
長く見えますが、意味を分解するとシンプルです:
docker exec -it postgres-sandbox:起動中のpostgres-sandboxコンテナの中でpsql:psqlを起動して-U postgres:postgresユーザーで-d sandbox:sandboxというデータベースに接続する
成功すると、プロンプトが sandbox=# のような表示に変わります。これは「sandboxデータベースとの会話の窓口が開いた」状態です。
5. テーブル一覧を見てみる
会話の窓口が開いたので、最初の一言を投げてみましょう。\dt (バックスラッシュ + dt)を打ってEnterです。
コード例・実例
sandbox=# \dt
departments、employees、customers、categories、products、orders、order_items の7つのテーブルが表示されれば、本セッションのゴール達成です。これが研修2日間の遊び場になります。
抜けるときは \q で安全に終了できます。
ここがポイント
\dtの\はバックスラッシュ(または円マーク)。SQLではなく、psql独自のメタコマンド- メタコマンドは末尾にセミコロンが要らない。SQLは必要(次のセッションで詳しく扱います)
💬 AIに聞いてみよう
うまく動かないとき、AIは強力な味方です。たとえば:
- 「
docker compose up -dを実行したら、port is already allocatedというエラーが出た。原因と対処法は?」(エラーメッセージはそのままコピペで貼ると伝わりやすい) - 「
docker execの-itってどういう意味?」 - 「psqlを終了したいけど
\qが効かない。他の終了方法は?」
実習・演習
課題
- git と docker のバージョンを表示する
- postgresql-sandbox を git clone する
docker compose up -dで起動するdocker exec -it postgres-sandbox psql -U postgres -d sandboxで接続する\dtで7つのテーブルが見えることを確認する\qで抜ける
成果物
\dtの実行結果をスクリーンショットまたはテキストで保存- 「動いた!」を自分の中で1回つぶやく
ヒント
- どこかで詰まったら、「今やったコマンド」と「出てきたエラーメッセージ」をそのままAIに貼って質問する
- Docker Desktop が起動していないと
Cannot connect to the Docker daemonのようなエラーが出る - ポートがすでに使われている場合、別のPostgreSQLが動いていないか確認する
まとめ(5分)
今回学んだことを一言でまとめると「Docker と postgresql-sandbox のおかげで、PostgreSQLは数コマンドで自分のPC上に住む」ということです。
接続コマンド docker exec -it postgres-sandbox psql -U postgres -d sandbox は、今後何度も使います。手が覚えるくらい繰り返してOKです。
次のセッションでは、いったん画面を離れて座学に戻ります。テーブルとは何か、レコードとは何か、主キーと外部キーは何のためにあるのか——今動かしたサンドボックスの中身を、概念として整理します。
🔄 振り返りチェック
docker compose up -dの-dは何のためのオプションでしょうか?- psqlの中で「テーブル一覧を見たい」「終了したい」とき、それぞれ何を打ちますか?
- 接続コマンドの
-U postgresと-d sandboxは、それぞれ何を指定していますか?
補足資料
- 発展課題:
docker compose downでいったん停止し、もう一度docker compose up -dで起動できることを確認する(再現性の確認)
学習ガイド
想定される質問と回答例
| 質問 | ヒント |
|---|---|
| Dockerって何のために使うんですか? | 「設定済みの環境を箱ごと配る仕組み」。同じ箱なら誰のPCでも同じように動くので、研修や本番運用で重宝する |
docker compose と docker-compose の違いは? |
新しい形式(V2)が docker compose、古い形式(V1)が docker-compose。どちらでもOKなことが多いが、新しい方を推奨 |
\dt の \ は半角バックスラッシュ?円マーク? |
OS/フォントにより見え方が違うが、内部的には同じ文字。日本語キーボードの円マークキーで入力できる |
| psqlで Enter したのに何も起きない | SQLの場合は末尾にセミコロン ; が必要。打ち忘れていないか確認 |
つまずきやすいポイント
| つまずきポイント | ヒント |
|---|---|
| Docker Desktop を起動し忘れている | クジラのアイコンが常駐していることを確認。再起動後は手動で立ち上げが必要なことが多い |
git clone でネットワークエラーが出る |
社内プロキシ環境ではプロキシ設定が必要なことがある。AIに「会社のプロキシ環境でgit cloneする方法」を聞く |
\dt の結果がスカスカ |
データベース名を間違えている可能性。\l で全DB一覧、\c sandbox でsandboxに切替できる |
| psqlを抜けたあとも PostgreSQL は動き続けている | これは正常。完全に止めるには docker compose down を実行 |