5.4 KiB
5.4 KiB
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- 用户IDdraft_content- 草稿内容 (JSONB)created_at- 创建时间updated_at- 更新时间
3. resource_categories(资源分类表)
id- 分类ID (UUID)title- 分类标题ai_prompt- AI 提示词color- 分类颜色is_active- 是否激活is_cloud- 是否云端user_id- 用户IDcreated_at- 创建时间updated_at- 更新时间
4. projects(项目表)
id- 项目ID (UUID)name- 项目名称description- 项目描述project_directory- 项目目录thumbnail_path- 缩略图路径canvas_config- 画布配置 (JSONB)user_id- 用户IDcreated_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 配置
⚠️ 注意事项
- 生产环境: 请修改默认密码和配置
- 防火墙: 确保端口 5432 和 8080 可访问
- 数据备份: 定期备份重要数据
- 资源限制: 根据需要调整内存和CPU限制
🔧 故障排除
常见问题
- 端口冲突: 如果端口被占用,修改
docker-compose.yaml中的端口映射 - 权限问题: 确保 Docker 有足够权限访问数据卷
- 连接失败: 检查防火墙设置和网络配置
重置数据库
# 停止服务并删除数据
docker-compose down -v
# 重新启动
docker-compose up -d
这样就可以获得一个全新的数据库环境。