wecom-dashboards/deploy/CONFIG-FILE.md

181 lines
4.0 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 配置文件说明
## 外部配置文件方案
为了解决 Druid 配置无法通过环境变量覆盖的问题,我们使用外部配置文件方案。
## 文件结构
```
deploy/backend/
├── Dockerfile
├── entrypoint.sh
├── application-druid.yml # 外部配置文件
└── ruoyi-admin.jar # 你的 jar 包
```
## 配置文件说明
### application-druid.yml
这个文件会覆盖 jar 包内的 `application-druid.yml` 配置。
**重要配置项**
```yaml
spring:
datasource:
druid:
master:
url: jdbc:mysql://host.docker.internal:3316/ry-vue?...
username: root
password: jiong1114 # 修改为你的密码
redis:
host: host.docker.internal
port: 6379
password: # 如果有密码,填写这里
```
### 修改配置
如果需要修改数据库连接信息,编辑 [application-druid.yml](backend/application-druid.yml)
1. **数据库地址**: 修改 `master.url`
2. **数据库用户名**: 修改 `master.username`
3. **数据库密码**: 修改 `master.password`
4. **Redis 地址**: 修改 `redis.host`
5. **Redis 密码**: 修改 `redis.password`
## 工作原理
Spring Boot 会按以下顺序加载配置(后面的会覆盖前面的):
1. jar 包内的 `application.yml`
2. jar 包内的 `application-druid.yml`
3. jar 包外的 `application.yml`(如果存在)
4. jar 包外的 `application-druid.yml`**我们使用这个**
## 重新部署
修改配置后,需要重新构建镜像:
```bash
# 停止并删除旧容器
docker stop wecom-backend
docker rm wecom-backend
# 重新构建并启动
cd deploy
docker compose up -d --build backend
# 查看日志
docker compose logs -f backend
```
## 不需要重新构建的方案
如果你想修改配置而不重新构建镜像,可以使用卷挂载:
### 修改 docker-compose.yml
```yaml
services:
backend:
volumes:
- upload_data:/home/ruoyi/uploadPath
- ./backend/application-druid.yml:/app/application-druid.yml # 挂载配置文件
```
这样修改 `backend/application-druid.yml` 后,只需重启容器:
```bash
docker compose restart backend
```
## 验证配置
### 1. 检查配置文件是否被复制
```bash
docker exec -it wecom-backend cat /app/application-druid.yml
```
### 2. 查看启动日志
```bash
docker compose logs backend | grep -i "datasource\|redis"
```
### 3. 测试数据库连接
```bash
# 进入容器
docker exec -it wecom-backend sh
# 测试 MySQL 连接(需要安装 telnet 或 nc
nc -zv host.docker.internal 3316
# 测试 Redis 连接
nc -zv host.docker.internal 6379
```
## 常见问题
### 1. 配置文件没有生效
确认配置文件在正确的位置:
```bash
docker exec -it wecom-backend ls -la /app/
```
应该看到 `application-druid.yml` 文件。
### 2. 数据库名称不匹配
确保 MySQL 中存在对应的数据库:
```bash
docker exec -it mysql-jijin-test mysql -uroot -pjiong1114 -e "SHOW DATABASES;"
```
如果没有 `ry-vue` 数据库,创建它:
```bash
docker exec -it mysql-jijin-test mysql -uroot -pjiong1114 -e "CREATE DATABASE IF NOT EXISTS \`ry-vue\` DEFAULT CHARACTER SET utf8mb4;"
```
### 3. 仍然报配置错误
检查 jar 包的 Spring Boot 版本和配置加载方式。某些版本可能需要使用 `--spring.config.location` 参数:
修改 `entrypoint.sh`
```bash
#!/bin/sh
exec java -Dspring.profiles.active=prod \
--spring.config.location=classpath:/,file:/app/ \
-jar app.jar
```
## 完整的部署流程
```bash
# 1. 准备文件
deploy/backend/
├── ruoyi-admin.jar # 你的 jar 包
├── application-druid.yml # 已创建
├── entrypoint.sh # 已创建
└── Dockerfile # 已创建
# 2. 修改配置(如果需要)
vim deploy/backend/application-druid.yml
# 3. 构建并启动
cd deploy
docker compose up -d --build backend
# 4. 查看日志
docker compose logs -f backend
# 5. 验证启动成功
# 看到 "Started RuoYiApplication" 表示成功
```