181 lines
4.0 KiB
Markdown
181 lines
4.0 KiB
Markdown
# 配置文件说明
|
||
|
||
## 外部配置文件方案
|
||
|
||
为了解决 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" 表示成功
|
||
```
|