2025-04-29 11:05:48 +08:00
|
|
|
|
# 基于角色的系统 - Docker部署指南
|
|
|
|
|
|
|
|
|
|
## 项目概述
|
|
|
|
|
这是一个基于Django的基于角色的系统,使用MySQL数据库和Redis进行WebSocket通信。
|
|
|
|
|
|
|
|
|
|
## Docker部署步骤
|
|
|
|
|
|
|
|
|
|
### 前置要求
|
|
|
|
|
- 安装 [Docker](https://docs.docker.com/get-docker/)
|
|
|
|
|
- 安装 [Docker Compose](https://docs.docker.com/compose/install/)
|
|
|
|
|
|
|
|
|
|
### 部署步骤
|
|
|
|
|
|
2025-04-29 11:42:37 +08:00
|
|
|
|
1. **配置Docker镜像源**(解决网络问题)
|
|
|
|
|
|
|
|
|
|
编辑Docker Desktop设置,添加国内镜像源:
|
|
|
|
|
```json
|
|
|
|
|
{
|
|
|
|
|
"registry-mirrors": [
|
|
|
|
|
"https://hub-mirror.c.163.com",
|
|
|
|
|
"https://docker.mirrors.ustc.edu.cn",
|
|
|
|
|
"https://registry.docker-cn.com",
|
|
|
|
|
"https://reg-mirror.qiniu.com"
|
|
|
|
|
]
|
|
|
|
|
}
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
应用设置并重启Docker Desktop。
|
|
|
|
|
|
|
|
|
|
2. **准备环境变量**
|
2025-04-29 11:05:48 +08:00
|
|
|
|
|
|
|
|
|
复制示例环境变量文件并根据需要修改:
|
|
|
|
|
```bash
|
|
|
|
|
cp .env.example .env
|
|
|
|
|
```
|
|
|
|
|
|
2025-04-29 11:42:37 +08:00
|
|
|
|
3. **构建镜像**
|
2025-04-29 11:05:48 +08:00
|
|
|
|
|
|
|
|
|
```bash
|
2025-04-29 11:42:37 +08:00
|
|
|
|
docker-compose build
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
如果遇到网络问题,尝试预先拉取基础镜像:
|
|
|
|
|
```bash
|
|
|
|
|
docker pull python:3.11-slim
|
2025-04-29 11:05:48 +08:00
|
|
|
|
```
|
|
|
|
|
|
2025-04-29 11:42:37 +08:00
|
|
|
|
4. **启动容器**
|
|
|
|
|
|
|
|
|
|
```bash
|
|
|
|
|
docker-compose up -d
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
如果MySQL端口冲突(通常是本地已有MySQL服务),修改`docker-compose.yml`中的端口映射:
|
|
|
|
|
```yaml
|
|
|
|
|
ports:
|
|
|
|
|
- "3307:3306" # 使用3307替代3306
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
5. **执行数据库迁移**
|
2025-04-29 11:05:48 +08:00
|
|
|
|
|
|
|
|
|
```bash
|
|
|
|
|
docker-compose exec web python manage.py migrate
|
|
|
|
|
```
|
|
|
|
|
|
2025-04-29 11:42:37 +08:00
|
|
|
|
6. **创建测试用户**
|
|
|
|
|
|
|
|
|
|
```bash
|
|
|
|
|
docker-compose exec web python manage.py create_test_users
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
这将创建以下用户:
|
|
|
|
|
- 4个管理员用户(admin1-admin4,密码:admin123)
|
|
|
|
|
- 7个组长用户(leader1-leader7,密码:leader123)
|
|
|
|
|
|
|
|
|
|
执行后会显示每个用户的Token,可用于API认证。
|
|
|
|
|
|
|
|
|
|
7. **创建超级用户(可选)**
|
2025-04-29 11:05:48 +08:00
|
|
|
|
|
|
|
|
|
```bash
|
|
|
|
|
docker-compose exec web python manage.py createsuperuser
|
|
|
|
|
```
|
|
|
|
|
|
2025-04-29 11:42:37 +08:00
|
|
|
|
8. **查看日志(如需调试)**
|
2025-04-29 11:05:48 +08:00
|
|
|
|
|
|
|
|
|
```bash
|
|
|
|
|
docker-compose logs -f
|
|
|
|
|
```
|
2025-04-29 11:42:37 +08:00
|
|
|
|
|
|
|
|
|
查看特定服务日志:
|
|
|
|
|
```bash
|
|
|
|
|
docker-compose logs web # 查看web应用日志
|
|
|
|
|
docker-compose logs db # 查看数据库日志
|
|
|
|
|
```
|
2025-04-29 11:05:48 +08:00
|
|
|
|
|
|
|
|
|
### 访问应用
|
|
|
|
|
|
|
|
|
|
应用将在以下地址运行:`http://localhost:8000`
|
|
|
|
|
|
2025-04-29 11:42:37 +08:00
|
|
|
|
### 容器管理命令
|
2025-04-29 11:05:48 +08:00
|
|
|
|
|
|
|
|
|
```bash
|
2025-04-29 11:42:37 +08:00
|
|
|
|
# 查看容器状态
|
|
|
|
|
docker-compose ps
|
|
|
|
|
|
|
|
|
|
# 停止服务
|
2025-04-29 11:05:48 +08:00
|
|
|
|
docker-compose down
|
2025-04-29 11:42:37 +08:00
|
|
|
|
|
|
|
|
|
# 重新启动服务
|
|
|
|
|
docker-compose up -d
|
|
|
|
|
|
|
|
|
|
# 重建镜像并启动
|
|
|
|
|
docker-compose up -d --build
|
|
|
|
|
|
|
|
|
|
# 完全重置(包括数据卷)
|
|
|
|
|
docker-compose down -v
|
2025-04-29 11:05:48 +08:00
|
|
|
|
```
|
|
|
|
|
|
2025-04-29 11:42:37 +08:00
|
|
|
|
## 数据库访问
|
|
|
|
|
|
|
|
|
|
### 本地访问MySQL
|
|
|
|
|
- 主机: localhost
|
|
|
|
|
- 端口: 3307(如果修改了端口映射)
|
|
|
|
|
- 用户名: root
|
|
|
|
|
- 密码: Ooin2025!
|
|
|
|
|
- 数据库名: rolebasedfilemanagement
|
2025-04-29 11:05:48 +08:00
|
|
|
|
|
2025-04-29 11:42:37 +08:00
|
|
|
|
### 从容器内连接
|
2025-04-29 11:05:48 +08:00
|
|
|
|
```bash
|
2025-04-29 11:42:37 +08:00
|
|
|
|
docker-compose exec db mysql -u root -p rolebasedfilemanagement
|
2025-04-29 11:05:48 +08:00
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
## 数据备份与恢复
|
|
|
|
|
|
|
|
|
|
### 备份数据库
|
|
|
|
|
|
|
|
|
|
```bash
|
|
|
|
|
docker-compose exec db mysqldump -u root -p rolebasedfilemanagement > backup.sql
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
### 恢复数据库
|
|
|
|
|
|
|
|
|
|
```bash
|
|
|
|
|
docker-compose exec -T db mysql -u root -p rolebasedfilemanagement < backup.sql
|
|
|
|
|
```
|
|
|
|
|
|
2025-04-29 11:42:37 +08:00
|
|
|
|
## 故障排除
|
|
|
|
|
|
|
|
|
|
### 依赖问题
|
|
|
|
|
如果遇到缺少依赖项的错误,编辑`requirements.txt`添加缺失的包,然后重新构建:
|
|
|
|
|
```bash
|
|
|
|
|
docker-compose down
|
|
|
|
|
docker-compose build
|
|
|
|
|
docker-compose up -d
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
### 端口冲突
|
|
|
|
|
如果遇到端口冲突,修改`docker-compose.yml`中的端口映射,将冲突的端口修改为未使用的端口。
|
|
|
|
|
|
|
|
|
|
### 网络问题
|
|
|
|
|
如果无法下载Docker镜像,配置国内镜像源,或使用VPN解决网络连接问题。
|
|
|
|
|
|
2025-04-29 11:05:48 +08:00
|
|
|
|
## 注意事项
|
|
|
|
|
|
|
|
|
|
- 在生产环境中,请确保修改默认密码和密钥
|
|
|
|
|
- 生产环境应启用HTTPS
|
2025-04-29 11:42:37 +08:00
|
|
|
|
- 定期备份数据库和媒体文件
|
|
|
|
|
- 对于生产部署,建议配置Nginx作为反向代理
|