统一时间格式和时区
This commit is contained in:
@@ -26,8 +26,10 @@ 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}"
|
||||
TZ="${TZ:-Asia/Shanghai}"
|
||||
DATABASE_URL="${DATABASE_URL:-postgres://${POSTGRES_USER}:${POSTGRES_PASSWORD}@127.0.0.1:${POSTGRES_PORT}/${POSTGRES_DB}?sslmode=disable&TimeZone=${TZ}}"
|
||||
export DATABASE_URL
|
||||
export TZ
|
||||
|
||||
# 结束指定端口上的进程(避免残留占用)
|
||||
free_port() {
|
||||
@@ -47,8 +49,28 @@ free_port() {
|
||||
fi
|
||||
}
|
||||
|
||||
postgres_container_exists() {
|
||||
docker ps -a --format '{{.Names}}' | grep -qx "$DEV_DB_CONTAINER"
|
||||
}
|
||||
|
||||
postgres_container_running() {
|
||||
docker ps --format '{{.Names}}' | grep -qx "$DEV_DB_CONTAINER"
|
||||
}
|
||||
|
||||
postgres_container_timezone_ready() {
|
||||
local env cmd
|
||||
env="$(docker inspect -f '{{range .Config.Env}}{{println .}}{{end}}' "$DEV_DB_CONTAINER" 2>/dev/null || true)"
|
||||
cmd="$(docker inspect -f '{{json .Config.Cmd}}' "$DEV_DB_CONTAINER" 2>/dev/null || true)"
|
||||
grep -qx "TZ=${TZ}" <<<"$env" && grep -qx "PGTZ=${TZ}" <<<"$env" && [[ "$cmd" == *"timezone=${TZ}"* ]]
|
||||
}
|
||||
|
||||
ensure_postgres() {
|
||||
if (echo >"/dev/tcp/127.0.0.1/${POSTGRES_PORT}") >/dev/null 2>&1; then
|
||||
if command -v docker >/dev/null 2>&1 && postgres_container_exists; then
|
||||
if ! postgres_container_timezone_ready; then
|
||||
log "检测到旧 PostgreSQL 开发容器缺少时区配置,重建容器并保留数据卷: ${DEV_DB_CONTAINER}"
|
||||
docker rm -f "$DEV_DB_CONTAINER" >/dev/null
|
||||
fi
|
||||
elif (echo >"/dev/tcp/127.0.0.1/${POSTGRES_PORT}") >/dev/null 2>&1; then
|
||||
log "检测到本机 PostgreSQL 端口已可访问: ${POSTGRES_PORT}"
|
||||
return 0
|
||||
fi
|
||||
@@ -56,9 +78,9 @@ ensure_postgres() {
|
||||
log "未找到 Docker,请确认本机 PostgreSQL 已可通过 DATABASE_URL 访问"
|
||||
return 0
|
||||
fi
|
||||
if docker ps --format '{{.Names}}' | grep -qx "$DEV_DB_CONTAINER"; then
|
||||
if postgres_container_running; then
|
||||
log "PostgreSQL 开发容器已运行: ${DEV_DB_CONTAINER}"
|
||||
elif docker ps -a --format '{{.Names}}' | grep -qx "$DEV_DB_CONTAINER"; then
|
||||
elif postgres_container_exists; then
|
||||
log "启动 PostgreSQL 开发容器: ${DEV_DB_CONTAINER}"
|
||||
docker start "$DEV_DB_CONTAINER" >/dev/null
|
||||
else
|
||||
@@ -69,8 +91,11 @@ ensure_postgres() {
|
||||
-e POSTGRES_USER="$POSTGRES_USER" \
|
||||
-e POSTGRES_PASSWORD="$POSTGRES_PASSWORD" \
|
||||
-e POSTGRES_DB="$POSTGRES_DB" \
|
||||
-e TZ="$TZ" \
|
||||
-e PGTZ="$TZ" \
|
||||
-v "${DEV_DB_CONTAINER}-data:/var/lib/postgresql/data" \
|
||||
"$POSTGRES_IMAGE" >/dev/null
|
||||
"$POSTGRES_IMAGE" \
|
||||
-c timezone="$TZ" >/dev/null
|
||||
fi
|
||||
|
||||
for i in $(seq 1 40); do
|
||||
|
||||
Reference in New Issue
Block a user