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