0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

docker on WSL2 で postgres お遊び環境構築

Posted at

対象

  • 自分用備忘録
  • とりあえず docker で postgresql 動かしたい人

環境

  • OS: windows11 の WSL2 ubuntu
  • editor: VSCode

本編

wsl, docker 編

wsl2 で docker 環境構築については以下の記事を参考にしました。

Docker Desktop は個人だと無料ですが、仕事だと有料なので汎用性あるかもしれないこの方法で作成。

VSCode の Remote Development を入れると、VSCode の端末から WSL2 の Ubuntu を触れるので便利。

postgresql 編

postgresql 用のディレクトリを作成します。

ディレクトリ構成は以下です。

└── postgresdata
    ├── compose.yml
    └── init
    │   └── init.sql
    └── data
    │   └── ...
    └── work
        └── persondata.sql

compose.yml にて作成したディレクトリをバインドしています。
ディレクトリの役割としては

  • init: 最初に実行される init.sql 置き場
  • data: postgresql のデータ場所
  • work: 作業ファイル置き場

となります。

compose.yml の内容は以下。

version: "3.8"

services:
  db:
    image: postgres:14
    container_name: postgres
    environment:
      - POSTGRES_DB=test
      - POSTGRES_USER=user
      - POSTGRES_PASSWORD=xxxx
    ports:
      - "5432:5432"
    volumes:
      - ./init:/docker-entrypoint-initdb.d
      - ./data:/var/lib/postgresql/data
      - ./work:/work
    working_dir: /work

environment のPOSTGRES_DBでデータベースを指定できます。

working_dirを指定して psql 実行時のファイルパス指定を端折りやすくしました。

用意した sql ファイルは以下。

  • init.sql
CREATE TABLE person (name varchar(50), birthday date);
  • persondata.sql
INSERT INTO
    person (name, birthday)
VALUES
    ('渋沢栄一', '1840-03-16'),
    ('徳川慶喜', '1837-10-28'),
    ('西郷隆盛', '1828-01-23'),
    ('坂本龍馬', '1836-01-03');

上記ファイル準備後は、docker compose up -dでコンテナを起動、docker compose exec db psql -U user testで psql を起動できます。

docker compose exec db /bin/bashで入ってから、psql -U user testでも OK.

簡単にコマンドチェック

  • テーブル一覧、構造の確認

test=# \dt
        List of relations
 Schema |  Name  | Type  | Owner
--------+--------+-------+-------
 public | person | table | user
(1 row)

test=# \d person;
                       Table "public.person"
  Column  |         Type          | Collation | Nullable | Default
----------+-----------------------+-----------+----------+---------
 name     | character varying(50) |           |          |
 birthday | date                  |           |          |
  • データ投入、確認
test=# \i personaldata.sql
INSERT 0 4

test=# select * from person;
   name   |  birthday
----------+------------
 渋沢栄一 | 1840-03-16
 徳川慶喜 | 1837-10-28
 西郷隆盛 | 1828-01-23
 坂本龍馬 | 1836-01-03
(4 rows)

おわりに

SQL を打ちたいだけなら SQL Fiddle などのサービスでもいいかも。

postgresql の復習環境としては〇.

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?