⚡️

[Docker]DockerでPostgreSQLを使う

2024/01/29に公開

はじめに

DockerでPostgreSQLを使うときの備忘録です

動作環境

  • Docker 24.0.7
  • mac macOS 14.2.1

目標

  • PostgreSQLの環境を作る
  • DBを作成する
  • テーブルを作成する
  • テーブルに内容を書き込む
  • DBを削除する

手順

PostgreSQLの環境を作る

docker-compose.yml
version: '3'
services:
  db:
    image: postgres:14
    container_name: postgres_pta
    build: .
    ports:
      - 5432:5432
    volumes:
      - db-store:/var/lib/postgresql/data
    environment:
      POSTGRES_USER: 'user'
      POSTGRES_PASSWORD: 'postgres'
    networks:
      - sptodb
volumes:
  db-store:
networks:
  sptodb:
    external: true  
Dockerfile
FROM postgres:14

# Time ZoneAc
ENV TZ Asia/Tokyo

↑でディレクトリを構成したあと、

$ docker-compose up -d --build

でコンテナを立ち上げることでPostgreSQLの環境が作れます

PostgreSQLに接続する

  1. execしてコンテナの中に入ります
$ docker-compose exec -it db bash

root@d200fb1b67b9:/#
  1. PostgreSQLに接続する
$ psql -U user

user=#

DBを作成する

  • DBの作成
user=# CREATE DATABASE test_db;
  • 確認
    こうなってたらOK
user=# \l
                             List of databases
   Name    | Owner | Encoding |  Collate   |   Ctype    | Access privileges 
-----------+-------+----------+------------+------------+-------------------
 postgres  | user  | UTF8     | en_US.utf8 | en_US.utf8 | 
 template0 | user  | UTF8     | en_US.utf8 | en_US.utf8 | =c/user          +
           |       |          |            |            | user=CTc/user
 template1 | user  | UTF8     | en_US.utf8 | en_US.utf8 | =c/user          +
           |       |          |            |            | user=CTc/user
 test_db   | user  | UTF8     | en_US.utf8 | en_US.utf8 | 
 user      | user  | UTF8     | en_US.utf8 | en_US.utf8 | 
(5 rows)

テーブルを作成する

  • 対象のDBを選択する
user=# \c test_db; 
  • テーブルを作成する
test_db=# CREATE TABLE test_tbl (id integer, name varchar(10), company varchar(20));

int型のid,文字列のnamecompanyの列を作る

  • 確認
test_db=# \dt

         List of relations
 Schema |   Name   | Type  | Owner
--------+----------+-------+-------
 public | test_tbl | table | root
(1 row)

テーブルに内容を書き込む

  • 書き込み
test_db=# INSERT INTO test_tbl (id, name, company) VALUES (1, 'Taro', 'ABC Co. Ltd.');
  • 確認
test_db=# SELECT * FROM test_tbl;
 id | name |   company
----+------+--------------
  1 | Taro | ABC Co. Ltd.
(1 row)

DBを削除する

  • DBを切り替える
test_db=# \c user
  • 削除
user=# DROP DATABASE test_db;
  • 確認
root=# \l
                             List of databases
   Name    | Owner | Encoding |  Collate   |   Ctype    | Access privileges
-----------+-------+----------+------------+------------+-------------------
 postgres  | root  | UTF8     | ja_JP.utf8 | ja_JP.utf8 |
 root      | root  | UTF8     | ja_JP.utf8 | ja_JP.utf8 |
 template0 | root  | UTF8     | ja_JP.utf8 | ja_JP.utf8 | =c/root          +
           |       |          |            |            | root=CTc/root
 template1 | root  | UTF8     | ja_JP.utf8 | ja_JP.utf8 | =c/root          +
           |       |          |            |            | root=CTc/root
(4 rows)

おまけ [GUIでDBを見てみる]

TablePlusというアプリを使います。
https://tableplus.com/

コンテナで立ち上げたDBに接続する


  • Nameはdocker-compose.ymlで指定した名前
  • ローカルホストを指定
  • User、Password、Portはdocker-compose.ymlで指定したもの

    DBを指定してやればテーブルとか見れる

参考

DockerでPostgreSQLを立てて、DBの操作してみる

GitHubで編集を提案

Discussion