使用 pg 替换 sql

This commit is contained in:
yml2213
2026-07-22 13:34:55 +08:00
parent 0c60f76af0
commit f9dc80e563
8 changed files with 101 additions and 24 deletions
+47
View File
@@ -20,6 +20,14 @@ fi
BACKEND_PORT="${PORT:-8080}"
FRONTEND_PORT="${FRONTEND_PORT:-5173}"
POSTGRES_USER="${POSTGRES_USER:-affiliate}"
POSTGRES_PASSWORD="${POSTGRES_PASSWORD:-affiliate_dev_password}"
POSTGRES_DB="${POSTGRES_DB:-affiliate_dash}"
POSTGRES_PORT="${POSTGRES_PORT:-5432}"
POSTGRES_IMAGE="${POSTGRES_IMAGE:-docker.m.daocloud.io/library/postgres:16-alpine}"
DEV_DB_CONTAINER="${DEV_DB_CONTAINER:-affiliate_dash_postgres_dev}"
DATABASE_URL="${DATABASE_URL:-postgres://${POSTGRES_USER}:${POSTGRES_PASSWORD}@127.0.0.1:${POSTGRES_PORT}/${POSTGRES_DB}?sslmode=disable}"
export DATABASE_URL
# 结束指定端口上的进程(避免残留占用)
free_port() {
@@ -39,6 +47,44 @@ free_port() {
fi
}
ensure_postgres() {
if (echo >"/dev/tcp/127.0.0.1/${POSTGRES_PORT}") >/dev/null 2>&1; then
log "检测到本机 PostgreSQL 端口已可访问: ${POSTGRES_PORT}"
return 0
fi
if ! command -v docker >/dev/null 2>&1; then
log "未找到 Docker,请确认本机 PostgreSQL 已可通过 DATABASE_URL 访问"
return 0
fi
if docker ps --format '{{.Names}}' | grep -qx "$DEV_DB_CONTAINER"; then
log "PostgreSQL 开发容器已运行: ${DEV_DB_CONTAINER}"
elif docker ps -a --format '{{.Names}}' | grep -qx "$DEV_DB_CONTAINER"; then
log "启动 PostgreSQL 开发容器: ${DEV_DB_CONTAINER}"
docker start "$DEV_DB_CONTAINER" >/dev/null
else
log "创建 PostgreSQL 开发容器: ${DEV_DB_CONTAINER}"
docker run -d \
--name "$DEV_DB_CONTAINER" \
-p "${POSTGRES_PORT}:5432" \
-e POSTGRES_USER="$POSTGRES_USER" \
-e POSTGRES_PASSWORD="$POSTGRES_PASSWORD" \
-e POSTGRES_DB="$POSTGRES_DB" \
-v "${DEV_DB_CONTAINER}-data:/var/lib/postgresql/data" \
"$POSTGRES_IMAGE" >/dev/null
fi
for i in $(seq 1 40); do
if docker exec "$DEV_DB_CONTAINER" pg_isready -U "$POSTGRES_USER" -d "$POSTGRES_DB" >/dev/null 2>&1; then
log "PostgreSQL 已就绪"
return 0
fi
sleep 0.5
done
echo "错误: PostgreSQL 启动超时"
docker logs "$DEV_DB_CONTAINER" 2>/dev/null || true
exit 1
}
cleanup() {
trap - INT TERM EXIT
echo ""
@@ -77,6 +123,7 @@ fi
free_port "$BACKEND_PORT"
free_port "$FRONTEND_PORT"
ensure_postgres
log "启动后端 http://localhost:${BACKEND_PORT}"
(