init-db.sh
Rama main · réplica de lectura del repositorio original.
#!/bin/bash
set -e
# This script runs inside the PostgreSQL container on first startup.
# It creates the Temporal user and databases using credentials from
# environment variables passed via docker-compose.yml.
TEMPORAL_USER="${TEMPORAL_DB_USER:-temporal}"
TEMPORAL_PASS="${TEMPORAL_DB_PASSWORD:-temporal}"
psql -v ON_ERROR_STOP=1 --username "$POSTGRES_USER" --dbname "$POSTGRES_DB" <<-EOSQL
CREATE USER ${TEMPORAL_USER} WITH PASSWORD '${TEMPORAL_PASS}' CREATEDB;
CREATE DATABASE temporal OWNER ${TEMPORAL_USER};
CREATE DATABASE temporal_visibility OWNER ${TEMPORAL_USER};
EOSQL
# PostgreSQL 16+ requires explicit schema permissions
psql -v ON_ERROR_STOP=1 --username "$POSTGRES_USER" --dbname "temporal" <<-EOSQL
GRANT ALL ON SCHEMA public TO ${TEMPORAL_USER};
EOSQL
psql -v ON_ERROR_STOP=1 --username "$POSTGRES_USER" --dbname "temporal_visibility" <<-EOSQL
GRANT ALL ON SCHEMA public TO ${TEMPORAL_USER};
EOSQL
echo "Temporal databases initialized for user: ${TEMPORAL_USER}"