why
Spring で実際につなぐために、接続情報があり、テーブルが自動生成される PostgreSQL サーバーを Docker で立てたくなった。
Docker Compose で ログイン情報を書いて SQL ファイルでテーブル作成を試す
https://zenn.dev/msksgm/articles/20220603-kotlin-jdbc-postgresql#db
この記事を参考に、docker-compose.yml に
- DB の名前
- ユーザー名
- パスワード
これらを書いて
読み込まれる SQL でテーブルの作成を擦るように書いてみた。
しかし、これだと DB と USER が作られていないので
DB にログインしてテーブルができているか確認することができなかった。
SQL でユーザーと DB の作成を行い、DB の権限をユーザーに渡す
https://amateur-engineer.com/docker-compose-postgresql/
この記事を参考に
version: '3.2'
services:
#
# PostgreSQL
#
person-db:
image: postgres:14-bullseye
container_name: person-db
ports:
- 5444:5432
volumes:
- ./postgresql/init:/docker-entrypoint-initdb.d
environment:
POSTGRES_USER: kaede
POSTGRES_PASSWORD: pass
POSTGRES_DB: person-db
POSTGRES_INIT_DB_ARGS: --encoding=UTF-8
init を初期位置の *.sql として
00-init.sql を作り(名前はなんでもOK)
CREATE USER kaede;
CREATE DATABASE person-db;
GRANT ALL PRIVILEGES ON DATABASE person-db TO kaede;
user と db と権限作ったら
dc up
WARNING: Found orphan containers (psql_pgadmin_1, postgres_dc, psql_postgres_1, sample-pg) for this project. If you removed or renamed this service in your compose file, you can run this command with the --remove-orphans flag to clean it up.
Starting person-db ... done
Attaching to person-db
person-db |
person-db | PostgreSQL Database directory appears to contain a database; Skipping initialization
person-db |
person-db | 2022-12-18 16:36:57.296 UTC [1] LOG: starting PostgreSQL 14.6 (Debian 14.6-1.pgdg110+1) on x86_64-pc-linux-gnu, compiled by gcc (Debian 10.2.1-6) 10.2.1 20210110, 64-bit
person-db | 2022-12-18 16:36:57.296 UTC [1] LOG: listening on IPv4 address "0.0.0.0", port 5432
person-db | 2022-12-18 16:36:57.296 UTC [1] LOG: listening on IPv6 address "::", port 5432
person-db | 2022-12-18 16:36:57.298 UTC [1] LOG: listening on Unix socket "/var/run/postgresql/.s.PGSQL.5432"
person-db | 2022-12-18 16:36:57.303 UTC [26] LOG: database system was shut down at 2022-12-18 16:36:14 UTC
person-db | 2022-12-18 16:36:57.309 UTC [1] LOG: database system is ready to accept connections
ちゃんと起動して DB が作られて
psql -h localhost -p 5444 -U kaede -d person-db
Password for user kaede:
psql (12.12 (Ubuntu 12.12-0ubuntu0.20.04.1), server 14.6 (Debian 14.6-1.pgdg110+1))
WARNING: psql major version 12, server major version 14.
Some psql features might not work.
Type "help" for help.
person-db=#
user kaede
db person-db
これで接続することができた。
Top comments (0)