35 行
1.4 KiB
Bash
35 行
1.4 KiB
Bash
|
|
#!/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
|