#!/bin/sh # PostgreSQL 容器首次启动时执行: # 1. 创建游戏业务库 HONGHUANG_DB(默认 honghuang) # 2. 在该库执行 database/migrations/001_init_schema.up.sql(含参考数据 seed) set -e DB_NAME="${HONGHUANG_DB:-honghuang}" UP_SQL="/migrations/001_init_schema.up.sql" echo "[postgres-init] Creating database '${DB_NAME}' if not exists..." psql -v ON_ERROR_STOP=1 -U "${POSTGRES_USER}" -d "${POSTGRES_DB}" <<-EOSQL SELECT 'CREATE DATABASE ${DB_NAME}' WHERE NOT EXISTS (SELECT FROM pg_database WHERE datname = '${DB_NAME}')\gexec EOSQL if [ -f "${UP_SQL}" ]; then echo "[postgres-init] Running ${UP_SQL} on database '${DB_NAME}'..." psql -v ON_ERROR_STOP=1 -U "${POSTGRES_USER}" -d "${DB_NAME}" -f "${UP_SQL}" echo "[postgres-init] Migration and seed completed." else echo "[postgres-init] WARNING: ${UP_SQL} not found, skipping game schema init." fi # 执行开发测试数据种子脚本(scripts/seed.sh) SEED_SCRIPT="/scripts/seed.sh" if [ -f "${SEED_SCRIPT}" ] && [ -x "${SEED_SCRIPT}" ]; then echo "[postgres-init] Running ${SEED_SCRIPT} on database '${DB_NAME}'..." export DATABASE_URL="postgres://${POSTGRES_USER}:${POSTGRES_PASSWORD}@localhost:5432/${DB_NAME}?sslmode=disable" export DB_WAIT_TIMEOUT=60 bash "${SEED_SCRIPT}" echo "[postgres-init] Seed script completed." else echo "[postgres-init] WARNING: ${SEED_SCRIPT} not found or not executable, skipping seed." fi