mirror of
https://github.com/jxxghp/MoviePilot.git
synced 2026-05-06 20:42:43 +08:00
rollback local postgresql
This commit is contained in:
@@ -28,9 +28,6 @@ RUN apt-get update -y \
|
|||||||
rsync \
|
rsync \
|
||||||
ffmpeg \
|
ffmpeg \
|
||||||
nano \
|
nano \
|
||||||
postgresql-client \
|
|
||||||
postgresql \
|
|
||||||
postgresql-contrib \
|
|
||||||
&& dpkg-reconfigure --frontend noninteractive tzdata \
|
&& dpkg-reconfigure --frontend noninteractive tzdata \
|
||||||
&& \
|
&& \
|
||||||
if [ "$(uname -m)" = "x86_64" ]; \
|
if [ "$(uname -m)" = "x86_64" ]; \
|
||||||
@@ -77,7 +74,6 @@ RUN cp -f /app/docker/nginx.common.conf /etc/nginx/common.conf \
|
|||||||
&& echo 'fs.inotify.max_user_watches=5242880' >> /etc/sysctl.conf \
|
&& echo 'fs.inotify.max_user_watches=5242880' >> /etc/sysctl.conf \
|
||||||
&& echo 'fs.inotify.max_user_instances=5242880' >> /etc/sysctl.conf \
|
&& echo 'fs.inotify.max_user_instances=5242880' >> /etc/sysctl.conf \
|
||||||
&& locale-gen zh_CN.UTF-8 \
|
&& locale-gen zh_CN.UTF-8 \
|
||||||
&& for cmd in /usr/lib/postgresql/*/bin/*; do ln -sf "$cmd" /usr/local/bin/; done \
|
|
||||||
&& FRONTEND_VERSION=$(sed -n "s/^FRONTEND_VERSION\s*=\s*'\([^']*\)'/\1/p" /app/version.py) \
|
&& FRONTEND_VERSION=$(sed -n "s/^FRONTEND_VERSION\s*=\s*'\([^']*\)'/\1/p" /app/version.py) \
|
||||||
&& curl -sL "https://github.com/jxxghp/MoviePilot-Frontend/releases/download/${FRONTEND_VERSION}/dist.zip" | busybox unzip -d / - \
|
&& curl -sL "https://github.com/jxxghp/MoviePilot-Frontend/releases/download/${FRONTEND_VERSION}/dist.zip" | busybox unzip -d / - \
|
||||||
&& mv /dist /public \
|
&& mv /dist /public \
|
||||||
|
|||||||
@@ -214,6 +214,7 @@ cd /app || exit
|
|||||||
# 更改 moviepilot userid 和 groupid
|
# 更改 moviepilot userid 和 groupid
|
||||||
groupmod -o -g "${PGID}" moviepilot
|
groupmod -o -g "${PGID}" moviepilot
|
||||||
usermod -o -u "${PUID}" moviepilot
|
usermod -o -u "${PUID}" moviepilot
|
||||||
|
|
||||||
# 更改文件权限
|
# 更改文件权限
|
||||||
chown -R moviepilot:moviepilot \
|
chown -R moviepilot:moviepilot \
|
||||||
"${HOME}" \
|
"${HOME}" \
|
||||||
@@ -231,93 +232,6 @@ else
|
|||||||
gosu moviepilot:moviepilot playwright install chromium
|
gosu moviepilot:moviepilot playwright install chromium
|
||||||
fi
|
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
|
source /app/docker/cert.sh
|
||||||
|
|
||||||
|
|||||||
@@ -1,29 +0,0 @@
|
|||||||
# PostgreSQL Client Authentication Configuration File
|
|
||||||
# ===========================================
|
|
||||||
#
|
|
||||||
# Refer to the "Client Authentication" section in the PostgreSQL
|
|
||||||
# documentation for a complete description of this file.
|
|
||||||
|
|
||||||
# TYPE DATABASE USER ADDRESS METHOD
|
|
||||||
|
|
||||||
# "local" is for Unix domain socket connections only
|
|
||||||
local all all trust
|
|
||||||
|
|
||||||
# IPv4 local connections:
|
|
||||||
host all all 127.0.0.1/32 md5
|
|
||||||
host all all ::1/128 md5
|
|
||||||
|
|
||||||
# IPv6 local connections:
|
|
||||||
host all all ::1/128 md5
|
|
||||||
|
|
||||||
# Allow replication connections from localhost, by a user with the
|
|
||||||
# replication privilege.
|
|
||||||
local replication all trust
|
|
||||||
host replication all 127.0.0.1/32 md5
|
|
||||||
host replication all ::1/128 md5
|
|
||||||
|
|
||||||
# 允许所有IPv4连接(用于Docker容器内部通信)
|
|
||||||
host all all 0.0.0.0/0 md5
|
|
||||||
|
|
||||||
# 允许所有IPv6连接
|
|
||||||
host all all ::/0 md5
|
|
||||||
@@ -1,65 +0,0 @@
|
|||||||
# PostgreSQL configuration file template
|
|
||||||
# This file will be processed by envsubst to replace environment variables
|
|
||||||
|
|
||||||
# Connection and Authentication
|
|
||||||
listen_addresses = '*'
|
|
||||||
port = ${DB_POSTGRESQL_PORT}
|
|
||||||
max_connections = 100
|
|
||||||
|
|
||||||
# Memory Configuration
|
|
||||||
shared_buffers = 128MB
|
|
||||||
effective_cache_size = 256MB
|
|
||||||
work_mem = 4MB
|
|
||||||
maintenance_work_mem = 64MB
|
|
||||||
|
|
||||||
# Logging Configuration
|
|
||||||
log_destination = 'stderr'
|
|
||||||
logging_collector = on
|
|
||||||
log_directory = '${POSTGRESQL_LOG_DIR}'
|
|
||||||
log_filename = 'postgresql-%Y-%m-%d_%H%M%S.log'
|
|
||||||
log_rotation_age = 1d
|
|
||||||
log_rotation_size = 100MB
|
|
||||||
log_min_messages = warning
|
|
||||||
log_min_error_statement = error
|
|
||||||
log_min_duration_statement = 1000
|
|
||||||
|
|
||||||
# Query Tuning
|
|
||||||
random_page_cost = 1.1
|
|
||||||
effective_io_concurrency = 200
|
|
||||||
|
|
||||||
# WAL Configuration
|
|
||||||
wal_level = replica
|
|
||||||
max_wal_size = 1GB
|
|
||||||
min_wal_size = 80MB
|
|
||||||
checkpoint_completion_target = 0.9
|
|
||||||
wal_buffers = 16MB
|
|
||||||
|
|
||||||
# Background Writer
|
|
||||||
bgwriter_delay = 200ms
|
|
||||||
bgwriter_lru_maxpages = 100
|
|
||||||
bgwriter_lru_multiplier = 2.0
|
|
||||||
|
|
||||||
# Autovacuum
|
|
||||||
autovacuum = on
|
|
||||||
autovacuum_max_workers = 3
|
|
||||||
autovacuum_naptime = 1min
|
|
||||||
autovacuum_vacuum_threshold = 50
|
|
||||||
autovacuum_analyze_threshold = 50
|
|
||||||
|
|
||||||
# Client Connection Defaults
|
|
||||||
datestyle = 'iso, mdy'
|
|
||||||
timezone = 'UTC'
|
|
||||||
lc_messages = 'C'
|
|
||||||
lc_monetary = 'C'
|
|
||||||
lc_numeric = 'C'
|
|
||||||
lc_time = 'C'
|
|
||||||
default_text_search_config = 'pg_catalog.english'
|
|
||||||
|
|
||||||
# Locale and Formatting
|
|
||||||
datestyle = 'iso, mdy'
|
|
||||||
timezone = 'UTC'
|
|
||||||
lc_messages = 'C'
|
|
||||||
lc_monetary = 'C'
|
|
||||||
lc_numeric = 'C'
|
|
||||||
lc_time = 'C'
|
|
||||||
default_text_search_config = 'pg_catalog.english'
|
|
||||||
Reference in New Issue
Block a user