feat(deploy): auto-init database with pgvector support
- Change PostgreSQL image from postgres:15-alpine to pgvector/pgvector:pg15 - Add init_database() function to auto-detect and initialize database - Add 'db init' command for manual database initialization - Database init runs automatically on first 'start all' deployment - Includes admin account creation and pgvector extension verification Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
parent
632e27213a
commit
8b99021e0e
49
deploy.sh
49
deploy.sh
|
|
@ -387,6 +387,47 @@ start_infrastructure() {
|
||||||
log_success "基础设施启动完成"
|
log_success "基础设施启动完成"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# 初始化数据库 (自动检测并执行)
|
||||||
|
init_database() {
|
||||||
|
log_step "检查数据库初始化状态..."
|
||||||
|
|
||||||
|
# 等待 PostgreSQL 完全就绪
|
||||||
|
sleep 3
|
||||||
|
|
||||||
|
# 检查 admins 表是否存在 (作为初始化完成的标志)
|
||||||
|
local table_exists
|
||||||
|
table_exists=$($DOCKER_COMPOSE exec -T postgres psql -U postgres -d iconsulting -tAc "SELECT EXISTS (SELECT FROM information_schema.tables WHERE table_name = 'admins');" 2>/dev/null)
|
||||||
|
|
||||||
|
if [ "$table_exists" = "t" ]; then
|
||||||
|
log_success "数据库已初始化,跳过"
|
||||||
|
return 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
log_info "首次部署,开始初始化数据库..."
|
||||||
|
|
||||||
|
# 执行初始化脚本
|
||||||
|
if $DOCKER_COMPOSE exec -T postgres psql -U postgres -d iconsulting -f /docker-entrypoint-initdb.d/init.sql > /dev/null 2>&1; then
|
||||||
|
log_success "数据库初始化完成"
|
||||||
|
|
||||||
|
# 验证关键表
|
||||||
|
local admin_count
|
||||||
|
admin_count=$($DOCKER_COMPOSE exec -T postgres psql -U postgres -d iconsulting -tAc "SELECT COUNT(*) FROM admins;" 2>/dev/null)
|
||||||
|
log_info "默认管理员账户已创建 (用户名: admin, 密码: admin123)"
|
||||||
|
|
||||||
|
# 验证 vector 扩展
|
||||||
|
local vector_exists
|
||||||
|
vector_exists=$($DOCKER_COMPOSE exec -T postgres psql -U postgres -d iconsulting -tAc "SELECT EXISTS (SELECT FROM pg_extension WHERE extname = 'vector');" 2>/dev/null)
|
||||||
|
if [ "$vector_exists" = "t" ]; then
|
||||||
|
log_success "pgvector 扩展已启用"
|
||||||
|
else
|
||||||
|
log_warning "pgvector 扩展未能启用,向量搜索功能可能受限"
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
log_error "数据库初始化失败,请检查 init-db.sql"
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
# 启动 Kong 网关 (DB-less 模式)
|
# 启动 Kong 网关 (DB-less 模式)
|
||||||
start_kong() {
|
start_kong() {
|
||||||
log_step "启动 Kong API 网关 (DB-less 模式)..."
|
log_step "启动 Kong API 网关 (DB-less 模式)..."
|
||||||
|
|
@ -547,6 +588,7 @@ start_all() {
|
||||||
mkdir -p "$PROJECT_ROOT/pids"
|
mkdir -p "$PROJECT_ROOT/pids"
|
||||||
|
|
||||||
start_infrastructure
|
start_infrastructure
|
||||||
|
init_database
|
||||||
start_kong
|
start_kong
|
||||||
start_all_backend "$mode"
|
start_all_backend "$mode"
|
||||||
start_nginx
|
start_nginx
|
||||||
|
|
@ -1187,6 +1229,10 @@ do_db() {
|
||||||
done
|
done
|
||||||
log_success "数据库迁移完成"
|
log_success "数据库迁移完成"
|
||||||
;;
|
;;
|
||||||
|
init)
|
||||||
|
log_step "初始化数据库 (执行 init-db.sql)..."
|
||||||
|
init_database
|
||||||
|
;;
|
||||||
seed)
|
seed)
|
||||||
log_step "初始化种子数据..."
|
log_step "初始化种子数据..."
|
||||||
# 添加种子数据脚本
|
# 添加种子数据脚本
|
||||||
|
|
@ -1296,7 +1342,7 @@ show_help() {
|
||||||
plugins - 查看插件列表
|
plugins - 查看插件列表
|
||||||
|
|
||||||
db <action> 数据库操作
|
db <action> 数据库操作
|
||||||
action: migrate, seed, backup, restore, reset, status
|
action: init, migrate, seed, backup, restore, reset, status
|
||||||
|
|
||||||
help 显示此帮助信息
|
help 显示此帮助信息
|
||||||
|
|
||||||
|
|
@ -1310,6 +1356,7 @@ show_help() {
|
||||||
./deploy.sh restart user docker # 重启用户服务 (Docker)
|
./deploy.sh restart user docker # 重启用户服务 (Docker)
|
||||||
./deploy.sh logs conversation 200 # 查看对话服务最近200行日志
|
./deploy.sh logs conversation 200 # 查看对话服务最近200行日志
|
||||||
./deploy.sh clean all # 清理所有构建产物和依赖
|
./deploy.sh clean all # 清理所有构建产物和依赖
|
||||||
|
./deploy.sh db init # 初始化数据库 (首次部署)
|
||||||
./deploy.sh db backup # 备份数据库
|
./deploy.sh db backup # 备份数据库
|
||||||
./deploy.sh db migrate # 执行数据库迁移
|
./deploy.sh db migrate # 执行数据库迁移
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -21,7 +21,7 @@ services:
|
||||||
#=============================================================================
|
#=============================================================================
|
||||||
|
|
||||||
postgres:
|
postgres:
|
||||||
image: postgres:15-alpine
|
image: pgvector/pgvector:pg15
|
||||||
container_name: iconsulting-postgres
|
container_name: iconsulting-postgres
|
||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
environment:
|
environment:
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue