37 lines
1.7 KiB
YAML
37 lines
1.7 KiB
YAML
# tver 用 PostgreSQL スタック(Synology ds923p / 192.168.10.201)
|
||
#
|
||
# 配置先: ds923p の Container Manager「プロジェクト」
|
||
# /volume1/docker/tver-db/ に本ファイルを compose.yaml として配置する。
|
||
# パスワードは同じディレクトリの .env(POSTGRES_PASSWORD)から注入し、
|
||
# このファイルには実値を書かない。
|
||
#
|
||
# 注意(初回起動チェックポイント):
|
||
# 起動前に /volume1/docker/tver-db/pgdata を作成する。
|
||
# 初回起動後は Container Manager のヘルス状態とログを確認し、
|
||
# "database system is ready to accept connections" が出てからアプリを起動する。
|
||
# bind mount の所有権・権限で初期化に失敗した場合は、原因を確認してから
|
||
# 名前付きボリュームへの切り替えを検討する。
|
||
|
||
services:
|
||
postgres:
|
||
# Debian ベースの PostgreSQL 17。initdb の UTF-8 ロケールを利用する。
|
||
image: postgres:17
|
||
container_name: tver-postgres
|
||
restart: always
|
||
environment:
|
||
POSTGRES_USER: tver
|
||
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
|
||
POSTGRES_DB: tver
|
||
# 初回の initdb でのみ有効。既存の pgdata には後から反映されない。
|
||
POSTGRES_INITDB_ARGS: "--encoding=UTF8 --lc-collate=en_US.UTF-8 --lc-ctype=en_US.UTF-8"
|
||
ports:
|
||
# [要確認] Container Manager で 15434 が未使用であることを起動前に確認する。
|
||
# DSM ファイアウォールでは dockage(192.168.10.155)だけを許可する。
|
||
- "15434:5432"
|
||
volumes:
|
||
- /volume1/docker/tver-db/pgdata:/var/lib/postgresql/data
|
||
healthcheck:
|
||
test: ["CMD-SHELL", "pg_isready -U tver -d tver"]
|
||
interval: 10s
|
||
retries: 5
|