使用 pg 替换 sql
This commit is contained in:
@@ -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}"
|
||||
(
|
||||
|
||||
Reference in New Issue
Block a user