mxivideo/README-postgres.md

5.4 KiB
Raw Permalink Blame History

PostgreSQL Docker Compose 配置

这个配置提供了一个完整的 PostgreSQL 开发环境,包括数据库服务和可选的管理界面。

🚀 快速启动

1. 启动服务

# 启动 PostgreSQL 服务
docker-compose up -d postgres

# 或者启动所有服务(包括 pgAdmin
docker-compose up -d

2. 停止服务

# 停止所有服务
docker-compose down

# 停止并删除数据卷(⚠️ 会删除所有数据)
docker-compose down -v

📋 服务配置

PostgreSQL 数据库

  • 镜像: postgres:15-alpine
  • 容器名: mixvideo_postgres
  • 端口: 5432:5432
  • 数据库名: mixvideo
  • 用户名: mixvideo_user
  • 密码: mixvideo_password

pgAdmin 管理界面(可选)

  • 镜像: dpage/pgadmin4:latest
  • 容器名: mixvideo_pgadmin
  • 端口: 8080:80
  • 访问地址: http://localhost:8080
  • 邮箱: admin@mixvideo.com
  • 密码: admin123

🔧 连接配置

应用程序连接

# Python 连接示例
DATABASE_CONFIG = {
    'host': 'localhost',
    'port': 5432,
    'database': 'mixvideo',
    'user': 'mixvideo_user',
    'password': 'mixvideo_password'
}
// Node.js 连接示例
const connectionString = 'postgresql://mixvideo_user:mixvideo_password@localhost:5432/mixvideo'

命令行连接

# 使用 psql 连接
psql -h localhost -p 5432 -U mixvideo_user -d mixvideo

# 或者进入容器内部
docker exec -it mixvideo_postgres psql -U mixvideo_user -d mixvideo

📁 目录结构

.
├── docker-compose.yaml          # Docker Compose 配置文件
├── init-scripts/               # 数据库初始化脚本目录
│   └── 01-init-database.sql    # 初始化脚本
└── README-postgres.md          # 使用说明

🗄️ 数据库结构

初始化脚本会自动创建以下表:

1. users用户表

  • id - 用户ID (UUID)
  • username - 用户名
  • email - 邮箱
  • password_hash - 密码哈希
  • access_token - 访问令牌
  • token_expires_at - 令牌过期时间
  • created_at - 创建时间
  • updated_at - 更新时间
  • is_active - 是否激活

2. templates模板表

  • id - 模板ID (UUID)
  • name - 模板名称
  • description - 模板描述
  • thumbnail_path - 缩略图路径
  • draft_content_path - 草稿内容路径
  • resources_path - 资源路径
  • canvas_config - 画布配置 (JSONB)
  • duration - 时长
  • material_count - 素材数量
  • track_count - 轨道数量
  • tags - 标签数组
  • is_cloud - 是否云端
  • user_id - 用户ID
  • draft_content - 草稿内容 (JSONB)
  • created_at - 创建时间
  • updated_at - 更新时间

3. resource_categories资源分类表

  • id - 分类ID (UUID)
  • title - 分类标题
  • ai_prompt - AI 提示词
  • color - 分类颜色
  • is_active - 是否激活
  • is_cloud - 是否云端
  • user_id - 用户ID
  • created_at - 创建时间
  • updated_at - 更新时间

4. projects项目表

  • id - 项目ID (UUID)
  • name - 项目名称
  • description - 项目描述
  • project_directory - 项目目录
  • thumbnail_path - 缩略图路径
  • canvas_config - 画布配置 (JSONB)
  • user_id - 用户ID
  • created_at - 创建时间
  • updated_at - 更新时间

🔍 常用操作

查看服务状态

# 查看运行中的容器
docker-compose ps

# 查看服务日志
docker-compose logs postgres
docker-compose logs pgadmin

数据库操作

# 备份数据库
docker exec mixvideo_postgres pg_dump -U mixvideo_user mixvideo > backup.sql

# 恢复数据库
docker exec -i mixvideo_postgres psql -U mixvideo_user mixvideo < backup.sql

# 查看数据库大小
docker exec mixvideo_postgres psql -U mixvideo_user -d mixvideo -c "SELECT pg_size_pretty(pg_database_size('mixvideo'));"

性能监控

# 查看活跃连接
docker exec mixvideo_postgres psql -U mixvideo_user -d mixvideo -c "SELECT * FROM pg_stat_activity;"

# 查看表大小
docker exec mixvideo_postgres psql -U mixvideo_user -d mixvideo -c "SELECT schemaname,tablename,pg_size_pretty(pg_total_relation_size(schemaname||'.'||tablename)) as size FROM pg_tables ORDER BY pg_total_relation_size(schemaname||'.'||tablename) DESC;"

🛠️ 自定义配置

修改数据库配置

编辑 docker-compose.yaml 文件中的环境变量:

environment:
  POSTGRES_DB: your_database_name
  POSTGRES_USER: your_username
  POSTGRES_PASSWORD: your_password

添加初始化脚本

init-scripts/ 目录下添加 .sql.sh 文件,它们会在容器首次启动时按字母顺序执行。

持久化数据

数据会自动持久化到 Docker 卷中:

  • postgres_data - PostgreSQL 数据
  • pgadmin_data - pgAdmin 配置

⚠️ 注意事项

  1. 生产环境: 请修改默认密码和配置
  2. 防火墙: 确保端口 5432 和 8080 可访问
  3. 数据备份: 定期备份重要数据
  4. 资源限制: 根据需要调整内存和CPU限制

🔧 故障排除

常见问题

  1. 端口冲突: 如果端口被占用,修改 docker-compose.yaml 中的端口映射
  2. 权限问题: 确保 Docker 有足够权限访问数据卷
  3. 连接失败: 检查防火墙设置和网络配置

重置数据库

# 停止服务并删除数据
docker-compose down -v

# 重新启动
docker-compose up -d

这样就可以获得一个全新的数据库环境。