# PostgreSQL Docker Compose 配置 这个配置提供了一个完整的 PostgreSQL 开发环境,包括数据库服务和可选的管理界面。 ## 🚀 快速启动 ### 1. 启动服务 ```bash # 启动 PostgreSQL 服务 docker-compose up -d postgres # 或者启动所有服务(包括 pgAdmin) docker-compose up -d ``` ### 2. 停止服务 ```bash # 停止所有服务 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 # Python 连接示例 DATABASE_CONFIG = { 'host': 'localhost', 'port': 5432, 'database': 'mixvideo', 'user': 'mixvideo_user', 'password': 'mixvideo_password' } ``` ```javascript // Node.js 连接示例 const connectionString = 'postgresql://mixvideo_user:mixvideo_password@localhost:5432/mixvideo' ``` ### 命令行连接 ```bash # 使用 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` - 更新时间 ## 🔍 常用操作 ### 查看服务状态 ```bash # 查看运行中的容器 docker-compose ps # 查看服务日志 docker-compose logs postgres docker-compose logs pgadmin ``` ### 数据库操作 ```bash # 备份数据库 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'));" ``` ### 性能监控 ```bash # 查看活跃连接 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` 文件中的环境变量: ```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. **连接失败**: 检查防火墙设置和网络配置 ### 重置数据库 ```bash # 停止服务并删除数据 docker-compose down -v # 重新启动 docker-compose up -d ``` 这样就可以获得一个全新的数据库环境。