最近PostgreSQLを触ることが多いため、サクッと遊べるようにDockerで作成してみた。
Dockerfile
FROM postgres:14.5-bullseye
RUN localedef -i ja_JP -c -f UTF-8 -A /usr/share/locale/locale.alias ja_JP.UTF-8
ENV LANG ja_JP.UTF-8
docker-compose.yml
version: '3'
services:
db:
build: ./
# image: postgres:14.5-bullseye
ports:
- 5432:5432
volumes:
- "${PWD}/docker-entrypoint-initdb.d:/docker-entrypoint-initdb.d"
environment:
POSTGRES_PASSWORD: postgres
初期構築スクリプト
/docker-entrypoint-initdb.d に構築用DDLを配置すると起動時に勝手に読み込んで実行してくれる。
docker-entrypoint-initdb.dディレクトリを/docker-entrypoint-initdb.dにバインドすることで、docker-compose up
実行時にDDLが実行される。
ディレクトリ構成
./
├── Dockerfile
├── docker-compose.yml
└── docker-entrypoint-initdb.d
├── 01.create-db.sql
├── 02.create-role.sql
└── 03.create-schema.sql
Note | docker-entrypoint-initdb.dの下にddlというディレクトリを作成し配置してみたが実行されなかった。 1階層目だけ有効らしい。 |