⚡️
[Docker]DockerでPostgreSQLを使う
はじめに
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に接続する
- execしてコンテナの中に入ります
$ docker-compose exec -it db bash
root@d200fb1b67b9:/#
- 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
,文字列のname
とcompany
の列を作る
- 確認
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というアプリを使います。
コンテナで立ち上げたDBに接続する
- Nameは
docker-compose.yml
で指定した名前 - ローカルホストを指定
- User、Password、Port
はdocker-compose.yml
で指定したもの
DBを指定してやればテーブルとか見れる
Discussion