moodist/docker-database-mount.md
walle a3c95ec19b feat: 升级到 v3.0.0 - 独立音乐播放系统与 Docker 数据持久化
🎉 版本升级: 2.5.0 → 3.0.0

🎵 音乐播放系统重构:
- 独立的音乐播放系统,不影响当前选中声音
- 修复 React Hooks 调用错误
- 使用直接 Howl API 实现音频控制
- 添加播放/停止状态视觉反馈
- 组件显示逻辑完全分离

🐳 Docker 部署优化:
- 所有 compose 文件添加 SQLite 数据库挂载
- 支持 WAL 模式和并发写入
- 数据持久化,容器重启不丢失数据
- 创建详细的 Docker 数据库挂载文档

🎨 UI/UX 改进:
- 修复当前选中声音与音乐列表显示互斥问题
- 播放按钮状态动态显示
- 组件模块完全独立展示

🗄️ 数据库性能优化:
- 启用 WAL 模式提高并发性能
- 优化 SQLite 配置参数
- 添加详细日志和错误处理

📦 新增文件:
- docker-database-mount.md: Docker 数据库挂载说明文档
2025-11-19 15:21:49 +08:00

113 lines
No EOL
2.4 KiB
Markdown

# Docker 数据库挂载说明
## 概述
本项目已配置 SQLite 数据库文件挂载,确保数据在容器重启后不会丢失。
## 数据库文件位置
SQLite 数据库文件位于项目的 `./data` 目录中:
- `./data/users.db` - 主数据库文件
- `./data/users.db-wal` - Write-Ahead Log 文件
- `./data/users.db-shm` - 共享内存文件
## Docker Compose 配置
### 1. 基础配置 (`docker-compose.yml`)
```yaml
services:
moodist:
volumes:
# 挂载 SQLite 数据库文件和 WAL 文件
- ./data:/app/data:rw
environment:
- NODE_ENV=production
```
### 2. 优化配置 (`docker-compose.optimized.yml`)
```yaml
services:
moodist:
volumes:
# 挂载 SQLite 数据库文件目录(需要读写权限)
- ./data:/app/data:rw
# 挂载临时目录用于 SQLite WAL 文件
- moodist-temp:/tmp:rw
volumes:
moodist-temp:
driver: local
```
### 3. 开发配置 (`docker-compose.dev.yml`)
```yaml
services:
moodist-dev:
volumes:
# 挂载 SQLite 数据库文件目录
- ./data:/app/data:rw
```
## 使用方法
### 启动服务
```bash
# 生产环境
docker-compose up -d
# 优化环境
docker-compose -f docker-compose.optimized.yml up -d
# 开发环境
docker-compose -f docker-compose.dev.yml up -d
```
### 数据持久化
- 数据库文件会自动创建在 `./data` 目录中
- 容器重启或重新创建后数据不会丢失
- 支持数据库备份和迁移
### 备份数据库
```bash
# 备份数据库
cp ./data/users.db ./data/users.db.backup.$(date +%Y%m%d_%H%M%S)
# 查看数据库文件
ls -la ./data/
```
## 注意事项
1. **权限问题**: 确保 `./data` 目录有正确的读写权限
2. **WAL 模式**: SQLite 使用 WAL (Write-Ahead Logging) 模式,会产生额外的 WAL 和 SHM 文件
3. **并发访问**: Docker 挂载确保文件系统的一致性
4. **备份策略**: 建议定期备份数据库文件
## 故障排除
### 数据库锁定问题
如果遇到数据库锁定错误:
1. 停止容器:`docker-compose down`
2. 删除 WAL 文件:`rm ./data/users.db-wal ./data/users.db-shm`
3. 重新启动容器:`docker-compose up -d`
### 权限问题
如果遇到权限错误:
```bash
# 设置正确的目录权限
sudo chown -R 1000:1000 ./data
chmod 755 ./data
```
## 开发环境注意事项
开发环境中,数据库文件会被实时同步到本地文件系统,便于:
- 调试和测试
- 数据分析
- 快速重置测试数据