■ はじめに
Docker compose で ローカル開発環境用のPostgreSQLを立ち上げる Web UI が欲しい場合は、以下の関連記事を参照のこと
Docker compose ~ Pgweb/pgAdmin ~
https://dk521123.hatenablog.com/entry/2023/08/10/111919
目次
【1】環境確認 1)コマンド例 【2】サンプル 例1:Hello World 例2:マスタデータを入れるには
【1】環境確認
* 自分の環境が、docker compose できる環境かどうかを調べる。 => もし、うまくいかない場合、以下の関連記事を参考に構築する
WSL ~ Docker-CE + Genie / 環境構築編 ~
https://dk521123.hatenablog.com/entry/2021/11/03/003836
Docker compose ~ Version 2 ~
https://dk521123.hatenablog.com/entry/2023/01/02/000000
例1:Hello World
# Step1:docker の確認 sudo docker version # Step2:docker compose の確認 sudo docker compose version # Step3:docker compose の Hello world ls # compose.yml が存在する(以下「compose.yml」) # docker compose の実行 docker compose up -d [+] Running 2/2 ✔ Network xxxx_default Created 0.2s ✔ Container xxxx-hello-1 Started # Step4:後片付け sudo docker compose down [+] Running 2/2 ✔ Container xxxx-hello-1 Removed 0.0s ✔ Network xxxx_default Removed
compose.yml
https://qiita.com/KEINOS/items/43d9415e351d80f78c8b
version: "3" services: hello: image: hello-world:latest
【2】サンプル
例1:Hello world
compose.yml
version: '3' services: postgres: image: postgres:latest container_name: container_postgres restart: always environment: POSTGRES_USER: postgres POSTGRES_PASSWORD: password PGPASSWORD: password POSTGRES_DB: sample TZ: "Asia/Tokyo" ports: - 5431:5432 volumes: - postgres:/var/lib/postgresql/data volumes: postgres: name: vpg
コマンド例
# Step1: 立ち上げる sudo docker compose up -d # Step2:後片付け sudo docker compose down -v
例2:マスタデータを入れるには
* 以下のサイトが参考になる
https://amateur-engineer.com/docker-compose-postgresql/
フォルダ構成
+ compose.yaml + init + init.sql
compose.yaml
version: '3' services: postgres: image: postgres:latest container_name: postgres restart: always environment: POSTGRES_USER: postgres POSTGRES_PASSWORD: password PGPASSWORD: password POSTGRES_DB: sample TZ: "Asia/Tokyo" ports: - 5431:5432 volumes: - ./init:/docker-entrypoint-initdb.d networks: - app-network volumes: postgres-data: name: postgres-data networks: app-network: name: app-network driver: bridge
init.sql
--ユーザーの作成 CREATE USER docker; --DBの作成 CREATE DATABASE docker; --ユーザーにDBの権限をまとめて付与 GRANT ALL PRIVILEGES ON DATABASE docker TO docker; --ユーザーを切り替え \c docker --テーブルを作成 create table demo_person(id int, name varchar); --テーブルにデータを挿入 insert into demo_person(id, name) values (1, 'Mike'), (2, 'Tom');
コマンド例
# [0] 前回があれば、一旦削除する $ sudo docker compose down -v [+] Running 2/2 ✔ Container postgres Removed 0.6s ✔ Network app-network Removed 0.8s # [1] 立ち上げる $ sudo docker compose up -d [+] Running 2/2 ✔ Network app-network Created 0.2s ✔ Container postgres Started 0.5s # [2] コンテナ内に入る $ sudo docker exec -it postgres bash root@fa2bc691d078:/# psql -u postgres /usr/lib/postgresql/15/bin/psql: invalid option -- 'u' psql: hint: Try "psql --help" for more information. # [3] PostgreSQL内にログイン root@fa2bc691d078:/# psql -U postgres psql (15.3 (Debian 15.3-1.pgdg120+1)) Type "help" for help. # [4] DB確認 postgres=# \l List of databases Name | Owner | Encoding | Collate | Ctype | ICU Locale | Locale Pr ovider | Access privileges -----------+----------+----------+------------+------------+------------+---------- -------+----------------------- docker | postgres | UTF8 | en_US.utf8 | en_US.utf8 | | libc | =Tc/postgres + | | | | | | | postgres=CTc/postgres+ | | | | | | | docker=CTc/postgres postgres | postgres | UTF8 | en_US.utf8 | en_US.utf8 | | libc | sample | postgres | UTF8 | en_US.utf8 | en_US.utf8 | | libc | template0 | postgres | UTF8 | en_US.utf8 | en_US.utf8 | | libc | =c/postgres + | | | | | | | postgres=CTc/postgres template1 | postgres | UTF8 | en_US.utf8 | en_US.utf8 | | libc | =c/postgres + | | | | | | | postgres=CTc/postgres (5 rows) # [5] database "docker" に入る postgres=# \c docker You are now connected to database "docker" as user "postgres". # [6] 中身を確認(作成したテーブルを確認) docker=# \d List of relations Schema | Name | Type | Owner --------+-------------+-------+---------- public | demo_person | table | postgres (1 row) # [7] データ確認 docker=# select * from demo_person; id | name ----+------ 1 | Mike 2 | Tom (2 rows)
参考文献
https://mebee.info/2020/12/04/post-24686/
https://qiita.com/Akhr/items/8d5b5127ee971a640253
関連記事
Docker ~ 基礎知識編 ~
https://dk521123.hatenablog.com/entry/2020/04/24/160044
Docker ~ 入門編 ~
https://dk521123.hatenablog.com/entry/2023/02/25/000000
WSL ~ Docker-CE + Genie / 環境構築編 ~
https://dk521123.hatenablog.com/entry/2021/11/03/003836
Docker compose ~ 入門編 ~
https://dk521123.hatenablog.com/entry/2022/05/21/222910
Docker compose ~ 基本編 ~
https://dk521123.hatenablog.com/entry/2020/04/11/000000
Docker compose ~ Version 2 ~
https://dk521123.hatenablog.com/entry/2023/01/02/000000
Docker compose ~ Pgweb/pgAdmin ~
https://dk521123.hatenablog.com/entry/2023/08/10/111919
Dockerfile / Docker Compose でシェルを実行する
https://dk521123.hatenablog.com/entry/2023/07/21/234509
Flink + PostgreSQL を docker compose で構築する
https://dk521123.hatenablog.com/entry/2023/07/28/220039