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