11#! /bin/sh
22set -eu
33
4- # Required env (provided by your entrypoint/compose)
4+ # =============================================================================
5+ # PostgreSQL Initialization Script
6+ # =============================================================================
7+ # This script initializes:
8+ # 1. Application database (always) - roles, schema, and permissions
9+ # 2. Temporal databases (optional) - only if TEMPORAL_DB_USER is set
10+ # =============================================================================
11+
12+ # Required env for App DB (provided by your entrypoint/compose)
513: " ${APP_DB:? missing APP_DB} "
6- : " ${APP_DB_OWNER:? missing APP_DB_OWNER} " # NOLOGIN owner (app)
14+ : " ${APP_DB_OWNER:? missing APP_DB_OWNER} " # NOLOGIN owner (app)
715: " ${APP_DB_USER:? missing APP_DB_USER} " # app_user (LOGIN)
8- : " ${APP_DB_RO_USER:? missing APP_DB_RO_USER} " # app_ro (LOGIN)
9- : " ${TEMPORAL_DB_USER:? missing TEMPORAL_DB_USER} " # e.g., temporal_user
10- : " ${POSTGRES_APP_USER_PW:? missing POSTGRES_APP_USER_PW} " # password for app user
11- : " ${POSTGRES_APP_RO_PW:? missing POSTGRES_APP_RO_PW} " # password for read-only user
12- : " ${POSTGRES_TEMPORAL_PW:? missing POSTGRES_TEMPORAL_PW} "
13-
14- # Optional override for Temporal owner (NOLOGIN). Default: "<temporal_user>_owner"
15- TEMPORAL_DB_OWNER=" ${TEMPORAL_DB_OWNER:- ${TEMPORAL_DB_USER} _owner} "
16-
17- # Database names (override if you like)
18- TEMPORAL_DB=" ${TEMPORAL_DB:- temporal} "
19- TEMPORAL_VIS_DB=" ${TEMPORAL_VIS_DB:- temporal_visibility} "
16+ : " ${APP_DB_RO_USER:? missing APP_DB_RO_USER} " # app_ro (LOGIN)
17+ : " ${POSTGRES_APP_USER_PW:? missing POSTGRES_APP_USER_PW} " # password for app user
18+ : " ${POSTGRES_APP_RO_PW:? missing POSTGRES_APP_RO_PW} " # password for read-only user
2019
2120APP_SCHEMA=" ${APP_SCHEMA:- app} "
2221
23- echo " ==> Initializing roles/db for ${APP_DB} and Temporal"
22+ # =============================================================================
23+ # App Database Initialization
24+ # =============================================================================
25+ echo " ==> Initializing roles/db for ${APP_DB} "
2426
2527psql -v ON_ERROR_STOP=1 \
2628 -v APP_DB=" ${APP_DB} " \
@@ -29,11 +31,6 @@ psql -v ON_ERROR_STOP=1 \
2931 -v APP_RO_USER=" ${APP_DB_RO_USER} " \
3032 -v APP_USER_PASSWORD=" ${POSTGRES_APP_USER_PW} " \
3133 -v APP_RO_USER_PASSWORD=" ${POSTGRES_APP_RO_PW} " \
32- -v TEMPORAL_OWNER_USER=" ${TEMPORAL_DB_OWNER} " \
33- -v TEMPORAL_USER=" ${TEMPORAL_DB_USER} " \
34- -v TEMPORAL_USER_PASSWORD=" ${POSTGRES_TEMPORAL_PW} " \
35- -v TEMPORAL_DB=" ${TEMPORAL_DB} " \
36- -v TEMPORAL_VIS_DB=" ${TEMPORAL_VIS_DB} " \
3734 -v APP_SCHEMA=" ${APP_SCHEMA} " << 'PSQL '
3835\set ON_ERROR_STOP on
3936
@@ -112,7 +109,32 @@ SELECT format(
112109)\gexec
113110
114111\echo === App DB/roles initialized (3-role pattern) ===
112+ PSQL
113+
114+ echo " ==> App database initialization completed"
115+
116+ # =============================================================================
117+ # Temporal Database Initialization (Optional)
118+ # =============================================================================
119+ # Only run if TEMPORAL_DB_USER is set (indicates Temporal is enabled)
115120
121+ if [ -n " ${TEMPORAL_DB_USER:- } " ] && [ -n " ${POSTGRES_TEMPORAL_PW:- } " ]; then
122+ echo " ==> Temporal enabled, initializing Temporal roles/databases"
123+
124+ # Optional override for Temporal owner (NOLOGIN). Default: "<temporal_user>_owner"
125+ TEMPORAL_DB_OWNER=" ${TEMPORAL_DB_OWNER:- ${TEMPORAL_DB_USER} _owner} "
126+
127+ # Database names (override if you like)
128+ TEMPORAL_DB=" ${TEMPORAL_DB:- temporal} "
129+ TEMPORAL_VIS_DB=" ${TEMPORAL_VIS_DB:- temporal_visibility} "
130+
131+ psql -v ON_ERROR_STOP=1 \
132+ -v TEMPORAL_OWNER_USER=" ${TEMPORAL_DB_OWNER} " \
133+ -v TEMPORAL_USER=" ${TEMPORAL_DB_USER} " \
134+ -v TEMPORAL_USER_PASSWORD=" ${POSTGRES_TEMPORAL_PW} " \
135+ -v TEMPORAL_DB=" ${TEMPORAL_DB} " \
136+ -v TEMPORAL_VIS_DB=" ${TEMPORAL_VIS_DB} " << 'PSQL '
137+ \set ON_ERROR_STOP on
116138
117139\echo === Creating Temporal roles and databases ===
118140
@@ -204,4 +226,9 @@ SELECT format(
204226
205227PSQL
206228
229+ echo " ==> Temporal database initialization completed"
230+ else
231+ echo " ==> Temporal disabled (TEMPORAL_DB_USER not set), skipping Temporal database setup"
232+ fi
233+
207234echo " ==> Init completed"
0 commit comments