294 lines
6.4 KiB
Markdown
294 lines
6.4 KiB
Markdown
|
|
# 简化版 Docker 部署指南
|
|||
|
|
|
|||
|
|
这是一个简化的 Docker 部署方案,直接使用已经打包好的 jar 包和 dist 文件,无需在容器内重新构建。
|
|||
|
|
|
|||
|
|
## 📁 目录结构
|
|||
|
|
|
|||
|
|
```
|
|||
|
|
deploy/
|
|||
|
|
├── docker-compose.yml # Docker Compose 配置文件
|
|||
|
|
├── backend/ # 后端部署目录
|
|||
|
|
│ ├── Dockerfile # 后端 Dockerfile
|
|||
|
|
│ └── ruoyi-admin.jar # 【需要放置】后端 jar 包
|
|||
|
|
├── frontend/ # 前端部署目录
|
|||
|
|
│ ├── Dockerfile # 前端 Dockerfile
|
|||
|
|
│ ├── nginx.conf # Nginx 配置文件
|
|||
|
|
│ └── dist/ # 【需要放置】前端打包文件
|
|||
|
|
└── sql/ # 【可选】数据库初始化脚本
|
|||
|
|
└── ry_20xx.sql
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## 🚀 快速部署步骤
|
|||
|
|
|
|||
|
|
### 1. 准备文件
|
|||
|
|
|
|||
|
|
将以下文件上传到服务器的 `deploy` 目录:
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
# 1. 将后端 jar 包放到 backend 目录
|
|||
|
|
deploy/backend/ruoyi-admin.jar
|
|||
|
|
|
|||
|
|
# 2. 将前端 dist 文件夹放到 frontend 目录
|
|||
|
|
deploy/frontend/dist/
|
|||
|
|
|
|||
|
|
# 3. (可选)将数据库初始化脚本放到 sql 目录
|
|||
|
|
deploy/sql/ry_20xx.sql
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 2. 修改配置
|
|||
|
|
|
|||
|
|
编辑 `docker-compose.yml`,根据需要修改以下配置:
|
|||
|
|
|
|||
|
|
```yaml
|
|||
|
|
# MySQL 配置
|
|||
|
|
environment:
|
|||
|
|
MYSQL_ROOT_PASSWORD: password # 修改为你的密码
|
|||
|
|
MYSQL_DATABASE: ry-vue # 数据库名称
|
|||
|
|
|
|||
|
|
# 端口配置(如果端口冲突,可以修改)
|
|||
|
|
ports:
|
|||
|
|
- "3306:3306" # MySQL
|
|||
|
|
- "6379:6379" # Redis
|
|||
|
|
- "8080:8080" # 后端
|
|||
|
|
- "8081:80" # 前端
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 3. 启动服务
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
# 进入 deploy 目录
|
|||
|
|
cd deploy
|
|||
|
|
|
|||
|
|
# 启动所有服务
|
|||
|
|
docker-compose up -d
|
|||
|
|
|
|||
|
|
# 查看服务状态
|
|||
|
|
docker-compose ps
|
|||
|
|
|
|||
|
|
# 查看日志
|
|||
|
|
docker-compose logs -f
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 4. 访问应用
|
|||
|
|
|
|||
|
|
- **前端地址**: `http://your-server-ip:8081/ashai-wecom-test`
|
|||
|
|
- **后端 API**: `http://your-server-ip:8080`
|
|||
|
|
- **默认账号**: admin / admin123
|
|||
|
|
|
|||
|
|
## 📝 常用命令
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
# 启动所有服务
|
|||
|
|
docker-compose up -d
|
|||
|
|
|
|||
|
|
# 停止所有服务
|
|||
|
|
docker-compose down
|
|||
|
|
|
|||
|
|
# 重启某个服务
|
|||
|
|
docker-compose restart backend
|
|||
|
|
docker-compose restart frontend
|
|||
|
|
|
|||
|
|
# 查看服务日志
|
|||
|
|
docker-compose logs -f backend
|
|||
|
|
docker-compose logs -f frontend
|
|||
|
|
|
|||
|
|
# 查看服务状态
|
|||
|
|
docker-compose ps
|
|||
|
|
|
|||
|
|
# 进入容器
|
|||
|
|
docker exec -it wecom-backend sh
|
|||
|
|
docker exec -it wecom-frontend sh
|
|||
|
|
|
|||
|
|
# 重新构建并启动
|
|||
|
|
docker-compose up -d --build
|
|||
|
|
|
|||
|
|
# 停止并删除所有容器、网络、数据卷
|
|||
|
|
docker-compose down -v
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## 🔄 更新部署
|
|||
|
|
|
|||
|
|
### 更新后端
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
# 1. 停止后端服务
|
|||
|
|
docker-compose stop backend
|
|||
|
|
|
|||
|
|
# 2. 替换 jar 包
|
|||
|
|
cp new-ruoyi-admin.jar backend/ruoyi-admin.jar
|
|||
|
|
|
|||
|
|
# 3. 重新构建并启动
|
|||
|
|
docker-compose up -d --build backend
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 更新前端
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
# 1. 停止前端服务
|
|||
|
|
docker-compose stop frontend
|
|||
|
|
|
|||
|
|
# 2. 替换 dist 文件
|
|||
|
|
rm -rf frontend/dist
|
|||
|
|
cp -r new-dist frontend/dist
|
|||
|
|
|
|||
|
|
# 3. 重新构建并启动
|
|||
|
|
docker-compose up -d --build frontend
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## 🔧 配置说明
|
|||
|
|
|
|||
|
|
### 后端配置
|
|||
|
|
|
|||
|
|
后端使用 `--spring.profiles.active=prod` 启动,确保你的 jar 包中包含正确的生产环境配置:
|
|||
|
|
|
|||
|
|
- 数据库连接:`jdbc:mysql://mysql:3306/ry-vue`
|
|||
|
|
- Redis 连接:`redis://redis:6379`
|
|||
|
|
|
|||
|
|
如果需要修改配置,可以通过环境变量或重新打包 jar。
|
|||
|
|
|
|||
|
|
### 前端配置
|
|||
|
|
|
|||
|
|
前端通过 Nginx 提供服务,配置文件在 [frontend/nginx.conf](frontend/nginx.conf):
|
|||
|
|
|
|||
|
|
- 访问路径:`/ashai-wecom-test`
|
|||
|
|
- API 代理:`/ashai-wecom-test/prod-api/` → `http://backend:8080/`
|
|||
|
|
|
|||
|
|
### 数据库初始化
|
|||
|
|
|
|||
|
|
首次启动时,如果 `sql` 目录中有 `.sql` 文件,MySQL 会自动执行这些脚本。
|
|||
|
|
|
|||
|
|
如果需要手动导入:
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
# 复制 SQL 文件到容器
|
|||
|
|
docker cp ry_20xx.sql wecom-mysql:/tmp/
|
|||
|
|
|
|||
|
|
# 进入 MySQL 容器
|
|||
|
|
docker exec -it wecom-mysql bash
|
|||
|
|
|
|||
|
|
# 导入数据库
|
|||
|
|
mysql -uroot -ppassword ry-vue < /tmp/ry_20xx.sql
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## 🌐 集成到现有 Nginx(80 端口)
|
|||
|
|
|
|||
|
|
如果服务器 80 端口已有 Nginx,可以添加反向代理配置:
|
|||
|
|
|
|||
|
|
```nginx
|
|||
|
|
# 在你的 Nginx 配置中添加
|
|||
|
|
location /ashai-wecom-test {
|
|||
|
|
proxy_pass http://localhost:8081/ashai-wecom-test;
|
|||
|
|
proxy_set_header Host $host;
|
|||
|
|
proxy_set_header X-Real-IP $remote_addr;
|
|||
|
|
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
|||
|
|
proxy_set_header X-Forwarded-Proto $scheme;
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
然后重启 Nginx:
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
nginx -t
|
|||
|
|
nginx -s reload
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## 🐛 故障排查
|
|||
|
|
|
|||
|
|
### 1. 后端无法连接数据库
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
# 检查 MySQL 是否启动
|
|||
|
|
docker-compose ps mysql
|
|||
|
|
|
|||
|
|
# 查看 MySQL 日志
|
|||
|
|
docker-compose logs mysql
|
|||
|
|
|
|||
|
|
# 检查网络连接
|
|||
|
|
docker exec -it wecom-backend ping mysql
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 2. 前端无法访问后端 API
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
# 检查后端是否启动
|
|||
|
|
docker-compose ps backend
|
|||
|
|
|
|||
|
|
# 查看后端日志
|
|||
|
|
docker-compose logs backend
|
|||
|
|
|
|||
|
|
# 测试后端接口
|
|||
|
|
curl http://localhost:8080/
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 3. 前端页面 404
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
# 检查 dist 文件是否正确放置
|
|||
|
|
docker exec -it wecom-frontend ls -la /usr/share/nginx/html/ashai-wecom-test
|
|||
|
|
|
|||
|
|
# 查看 Nginx 日志
|
|||
|
|
docker-compose logs frontend
|
|||
|
|
|
|||
|
|
# 检查 Nginx 配置
|
|||
|
|
docker exec -it wecom-frontend cat /etc/nginx/conf.d/default.conf
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 4. 端口被占用
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
# 查看端口占用
|
|||
|
|
netstat -tulpn | grep 8080
|
|||
|
|
netstat -tulpn | grep 8081
|
|||
|
|
|
|||
|
|
# 修改 docker-compose.yml 中的端口映射
|
|||
|
|
ports:
|
|||
|
|
- "8082:8080" # 改为其他端口
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 5. 容器启动失败
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
# 查看详细日志
|
|||
|
|
docker-compose logs -f
|
|||
|
|
|
|||
|
|
# 检查容器状态
|
|||
|
|
docker-compose ps
|
|||
|
|
|
|||
|
|
# 重新构建
|
|||
|
|
docker-compose down
|
|||
|
|
docker-compose up -d --build
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## 📊 数据持久化
|
|||
|
|
|
|||
|
|
所有数据都通过 Docker 卷持久化:
|
|||
|
|
|
|||
|
|
- `mysql_data`: MySQL 数据
|
|||
|
|
- `redis_data`: Redis 数据
|
|||
|
|
- `upload_data`: 文件上传目录
|
|||
|
|
|
|||
|
|
即使删除容器,数据也不会丢失。如需完全清理:
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
docker-compose down -v
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## 🔒 安全建议
|
|||
|
|
|
|||
|
|
1. **修改默认密码**:修改 MySQL root 密码和应用管理员密码
|
|||
|
|
2. **限制端口访问**:使用防火墙限制数据库端口的外部访问
|
|||
|
|
3. **使用 HTTPS**:在生产环境配置 SSL 证书
|
|||
|
|
4. **定期备份**:定期备份数据库和上传文件
|
|||
|
|
|
|||
|
|
## 📈 性能优化
|
|||
|
|
|
|||
|
|
1. **调整 JVM 参数**:在 [backend/Dockerfile](backend/Dockerfile) 中添加 JVM 参数
|
|||
|
|
2. **配置 Nginx 缓存**:已在 [frontend/nginx.conf](frontend/nginx.conf) 中配置
|
|||
|
|
3. **数据库优化**:根据实际情况调整 MySQL 配置
|
|||
|
|
|
|||
|
|
## 💡 提示
|
|||
|
|
|
|||
|
|
- 首次启动可能需要等待 1-2 分钟,等待数据库初始化
|
|||
|
|
- 确保服务器有足够的内存(建议至少 2GB)
|
|||
|
|
- 生产环境建议使用外部数据库,而不是容器内的数据库
|