rollback local postgresql

This commit is contained in:
jxxghp
2025-08-19 08:30:07 +08:00
parent b79ccfafed
commit d48c6b98e8
4 changed files with 1 additions and 185 deletions

View File

@@ -214,6 +214,7 @@ cd /app || exit
# 更改 moviepilot userid 和 groupid
groupmod -o -g "${PGID}" moviepilot
usermod -o -u "${PUID}" moviepilot
# 更改文件权限
chown -R moviepilot:moviepilot \
"${HOME}" \
@@ -231,93 +232,6 @@ else
gosu moviepilot:moviepilot playwright install chromium
fi
# 启动PostgreSQL服务
if [ "${DB_TYPE:-sqlite}" = "postgresql" ]; then
INFO "→ 启动PostgreSQL服务..."
# 查找PostgreSQL bin目录
POSTGRESQL_BIN_DIR=$(find /usr/lib/postgresql -name "bin" -type d 2>/dev/null | head -1)
if [ -n "${POSTGRESQL_BIN_DIR}" ]; then
INFO "找到PostgreSQL bin目录: ${POSTGRESQL_BIN_DIR}"
else
ERROR "未找到PostgreSQL bin目录"
exit 1
fi
# 设置PATH环境变量加入PostgreSQL命令路径
export PATH="${POSTGRESQL_BIN_DIR}:${PATH}"
INFO "设置PATH环境变量: ${PATH}"
# 使用配置目录下的postgresql子目录作为数据目录
POSTGRESQL_DATA_DIR="${CONFIG_DIR}/postgresql"
POSTGRESQL_LOG_DIR="${CONFIG_DIR}/logs/postgresql"
INFO "数据目录: ${POSTGRESQL_DATA_DIR}"
INFO "日志目录: ${POSTGRESQL_LOG_DIR}"
# 初始化PostgreSQL数据目录
if [ ! -f "${POSTGRESQL_DATA_DIR}/PG_VERSION" ]; then
INFO "初始化PostgreSQL数据目录..."
# 确保目录存在
mkdir -p "${POSTGRESQL_DATA_DIR}" "${POSTGRESQL_LOG_DIR}"
chown -R moviepilot:moviepilot "${POSTGRESQL_DATA_DIR}" "${POSTGRESQL_LOG_DIR}"
INFO "执行 initdb 命令..."
gosu moviepilot:moviepilot initdb -D "${POSTGRESQL_DATA_DIR}"
# 配置PostgreSQL
INFO "复制PostgreSQL配置文件..."
cp /app/docker/pg_hba.conf "${POSTGRESQL_DATA_DIR}/pg_hba.conf"
# 使用envsubst处理postgresql.conf模板
export POSTGRESQL_LOG_DIR="${POSTGRESQL_LOG_DIR}"
envsubst '${DB_POSTGRESQL_PORT}${POSTGRESQL_LOG_DIR}' < /app/docker/postgresql.conf.template > "${POSTGRESQL_DATA_DIR}/postgresql.conf"
# 设置配置文件权限
chown moviepilot:moviepilot "${POSTGRESQL_DATA_DIR}/pg_hba.conf" "${POSTGRESQL_DATA_DIR}/postgresql.conf"
chmod 600 "${POSTGRESQL_DATA_DIR}/pg_hba.conf" "${POSTGRESQL_DATA_DIR}/postgresql.conf"
else
INFO "PostgreSQL数据目录已存在跳过初始化..."
fi
# 启动PostgreSQL服务
if ! gosu moviepilot:moviepilot pg_ctl -D "${POSTGRESQL_DATA_DIR}" -l "${POSTGRESQL_LOG_DIR}/postgresql.log" start; then
ERROR "PostgreSQL 服务启动失败!"
ERROR "请检查日志文件: ${POSTGRESQL_LOG_DIR}/postgresql.log"
if [ -f "${POSTGRESQL_LOG_DIR}/postgresql.log" ]; then
ERROR "PostgreSQL 日志内容:"
tail -20 "${POSTGRESQL_LOG_DIR}/postgresql.log"
else
ERROR "PostgreSQL 日志文件不存在,可能是权限问题或目录不存在"
fi
exit 1
fi
# 等待PostgreSQL启动
INFO "等待PostgreSQL服务启动..."
local wait_count=0
until gosu moviepilot:moviepilot pg_isready -h localhost -p "${DB_POSTGRESQL_PORT:-5432}"; do
sleep 1
wait_count=$((wait_count + 1))
if [ $wait_count -gt 30 ]; then
ERROR "PostgreSQL 服务启动超时,请检查日志文件: ${POSTGRESQL_LOG_DIR}/postgresql.log"
if [ -f "${POSTGRESQL_LOG_DIR}/postgresql.log" ]; then
ERROR "PostgreSQL 日志内容:"
tail -20 "${POSTGRESQL_LOG_DIR}/postgresql.log"
fi
exit 1
fi
done
# 创建数据库和用户
INFO "创建PostgreSQL数据库和用户..."
gosu moviepilot:moviepilot psql -h localhost -p "${DB_POSTGRESQL_PORT:-5432}" -U postgres -c "CREATE USER ${DB_POSTGRESQL_USERNAME:-moviepilot} WITH PASSWORD '${DB_POSTGRESQL_PASSWORD:-moviepilot}';" 2>/dev/null || true
gosu moviepilot:moviepilot psql -h localhost -p "${DB_POSTGRESQL_PORT:-5432}" -U postgres -c "CREATE DATABASE ${DB_POSTGRESQL_DATABASE:-moviepilot} OWNER ${DB_POSTGRESQL_USERNAME:-moviepilot};" 2>/dev/null || true
gosu moviepilot:moviepilot psql -h localhost -p "${DB_POSTGRESQL_PORT:-5432}" -U postgres -c "GRANT ALL PRIVILEGES ON DATABASE ${DB_POSTGRESQL_DATABASE:-moviepilot} TO ${DB_POSTGRESQL_USERNAME:-moviepilot};" 2>/dev/null || true
INFO "PostgreSQL服务启动完成"
fi
# 证书管理
source /app/docker/cert.sh