Files
Lannamokia 803e6cdaee feat: 添加PostgreSQL数据库集成和机台管理功能
- 新增PostgreSQL数据库支持,包含内置和外部数据库两种部署模式
- 实现机台管理功能,包括保护状态控制和VHD关键词设置
- 添加用户认证系统,支持会话管理和权限控制
- 更新Docker配置,支持数据库持久化和健康检查
- 扩展API接口,提供完整的RESTful API文档
- 更新客户端代码以支持机台ID和保护检查功能
- 添加数据库初始化脚本和配置指南
2025-10-21 20:10:18 +08:00

72 lines
2.1 KiB
Bash

#!/bin/bash
# 内置PostgreSQL数据库初始化脚本
# 此脚本在Docker容器启动时运行,用于初始化内置PostgreSQL数据库
set -e
# 日志函数
log() {
echo "[$(date '+%Y-%m-%d %H:%M:%S')] $1"
}
# 数据库配置
DB_NAME="${DB_NAME:-vhd_select}"
DB_USER="${DB_USER:-postgres}"
DB_PASSWORD="${DB_PASSWORD:-vhd_select_password}"
PGDATA="${PGDATA:-/var/lib/postgresql/data}"
log "开始初始化内置PostgreSQL数据库..."
# 检查数据目录是否已初始化
if [ ! -s "$PGDATA/PG_VERSION" ]; then
log "初始化PostgreSQL数据目录..."
# 初始化数据库
su-exec postgres initdb -D "$PGDATA" --auth-local=trust --auth-host=md5
# 启动PostgreSQL服务
log "启动PostgreSQL服务..."
su-exec postgres pg_ctl -D "$PGDATA" -l "$PGDATA/postgresql.log" start
# 等待PostgreSQL启动
log "等待PostgreSQL服务启动..."
for i in {1..30}; do
if su-exec postgres pg_isready -q; then
log "PostgreSQL服务已启动"
break
fi
if [ $i -eq 30 ]; then
log "错误: PostgreSQL服务启动超时"
exit 1
fi
sleep 1
done
# 创建数据库和用户
log "创建数据库和用户..."
su-exec postgres psql -v ON_ERROR_STOP=1 <<-EOSQL
CREATE USER $DB_USER WITH PASSWORD '$DB_PASSWORD';
CREATE DATABASE $DB_NAME OWNER $DB_USER;
GRANT ALL PRIVILEGES ON DATABASE $DB_NAME TO $DB_USER;
EOSQL
# 执行初始化SQL脚本
if [ -f "/app/init-db.sql" ]; then
log "执行数据库初始化脚本..."
su-exec postgres psql -v ON_ERROR_STOP=1 -d "$DB_NAME" -f "/app/init-db.sql"
log "数据库初始化脚本执行完成"
else
log "警告: 未找到数据库初始化脚本 /app/init-db.sql"
fi
# 停止PostgreSQL服务
log "停止PostgreSQL服务..."
su-exec postgres pg_ctl -D "$PGDATA" stop
log "内置PostgreSQL数据库初始化完成"
else
log "PostgreSQL数据目录已存在,跳过初始化"
fi
log "内置数据库初始化脚本执行完成"