# 使用现有 MySQL 和 Redis 容器的配置说明 ## 📋 当前配置 你的现有容器: - **MySQL**: `mysql-jijin-test` (端口 3316) - **Redis**: `redis` (端口 6379) ## 🔧 配置步骤 ### 1. 修改 docker-compose.yml 已经配置为使用 `host.docker.internal` 连接宿主机的容器。 关键配置: ```yaml environment: # MySQL 连接(注意端口是 3316) - SPRING_DATASOURCE_URL=jdbc:mysql://host.docker.internal:3316/ry-vue?... - SPRING_DATASOURCE_USERNAME=root - SPRING_DATASOURCE_PASSWORD=password # 修改为你的密码 # Redis 连接 - SPRING_REDIS_HOST=host.docker.internal - SPRING_REDIS_PORT=6379 - SPRING_REDIS_PASSWORD= # 如果有密码,填写这里 extra_hosts: - "host.docker.internal:host-gateway" # 允许容器访问宿主机 ``` ### 2. 修改数据库配置 **重要**:请根据你的实际情况修改以下配置: #### 数据库名称 默认使用 `ry-vue`,如果你的数据库名称不同,修改: ```yaml SPRING_DATASOURCE_URL=jdbc:mysql://host.docker.internal:3316/你的数据库名?... ``` #### 数据库密码 修改为你的 MySQL root 密码: ```yaml SPRING_DATASOURCE_PASSWORD=你的密码 ``` #### Redis 密码 如果你的 Redis 设置了密码,修改: ```yaml SPRING_REDIS_PASSWORD=你的redis密码 ``` ### 3. 准备数据库 在你的 MySQL 容器中创建数据库并导入数据: ```bash # 方式 1: 进入 MySQL 容器 docker exec -it mysql-jijin-test mysql -uroot -p # 创建数据库 CREATE DATABASE IF NOT EXISTS `ry-vue` DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci; # 退出 exit # 方式 2: 导入 SQL 文件 docker exec -i mysql-jijin-test mysql -uroot -p你的密码 ry-vue < /path/to/your.sql ``` ### 4. 启动服务 ```bash cd deploy docker-compose up -d ``` ## 🔍 验证连接 ### 检查后端日志 ```bash docker-compose logs -f backend ``` 如果看到类似以下内容,说明连接成功: ``` Started RuoYiApplication in X seconds ``` ### 测试数据库连接 ```bash # 进入后端容器 docker exec -it wecom-backend sh # 测试 MySQL 连接 wget -O- http://host.docker.internal:3316 2>&1 | grep -i mysql # 测试 Redis 连接 ping host.docker.internal ``` ## 🐛 常见问题 ### 1. 无法连接到 host.docker.internal **Windows/Mac**: `host.docker.internal` 自动可用 **Linux**: 需要手动添加,已在 docker-compose.yml 中配置: ```yaml extra_hosts: - "host.docker.internal:host-gateway" ``` ### 2. 数据库连接被拒绝 检查 MySQL 容器是否允许远程连接: ```bash # 进入 MySQL 容器 docker exec -it mysql-jijin-test mysql -uroot -p # 检查用户权限 SELECT host, user FROM mysql.user WHERE user='root'; # 如果 host 只有 localhost,需要授权 GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '你的密码'; FLUSH PRIVILEGES; ``` ### 3. 端口连接错误 确认你的 MySQL 端口是 3316: ```bash docker ps | grep mysql ``` 如果端口不同,修改 docker-compose.yml 中的端口号。 ### 4. Redis 连接失败 检查 Redis 是否允许远程连接: ```bash # 查看 Redis 配置 docker exec -it redis redis-cli CONFIG GET bind # 如果绑定了 127.0.0.1,需要修改为 0.0.0.0 docker exec -it redis redis-cli CONFIG SET bind "0.0.0.0" ``` ## 🔄 替代方案:使用 Docker 网络 如果 `host.docker.internal` 不工作,可以让新容器加入现有容器的网络: ### 1. 查看现有容器的网络 ```bash docker inspect mysql-jijin-test | grep NetworkMode docker inspect redis | grep NetworkMode ``` ### 2. 修改 docker-compose.yml 假设现有容器在 `bridge` 网络: ```yaml services: backend: # ... 其他配置 environment: # 直接使用容器名连接 - SPRING_DATASOURCE_URL=jdbc:mysql://mysql-jijin-test:3306/ry-vue?... - SPRING_REDIS_HOST=redis networks: - default networks: default: external: true name: bridge # 或者你的网络名称 ``` ### 3. 或者创建自定义网络 ```bash # 创建网络 docker network create my-network # 将现有容器连接到网络 docker network connect my-network mysql-jijin-test docker network connect my-network redis # 修改 docker-compose.yml networks: wecom-network: external: true name: my-network ``` ## 📝 完整配置示例 ### docker-compose.yml(使用 host.docker.internal) ```yaml version: '3.8' services: backend: build: context: ./backend dockerfile: Dockerfile container_name: wecom-backend restart: always ports: - "8080:8080" volumes: - upload_data:/home/ruoyi/uploadPath environment: - SPRING_PROFILES_ACTIVE=prod - TZ=Asia/Shanghai - SPRING_DATASOURCE_URL=jdbc:mysql://host.docker.internal:3316/ry-vue?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8 - SPRING_DATASOURCE_USERNAME=root - SPRING_DATASOURCE_PASSWORD=your_password - SPRING_REDIS_HOST=host.docker.internal - SPRING_REDIS_PORT=6379 - SPRING_REDIS_PASSWORD= extra_hosts: - "host.docker.internal:host-gateway" networks: - wecom-network frontend: build: context: ./frontend dockerfile: Dockerfile container_name: wecom-frontend restart: always ports: - "8081:80" depends_on: - backend networks: - wecom-network volumes: upload_data: driver: local networks: wecom-network: driver: bridge ``` ## 🎯 快速检查清单 - [ ] 修改了 MySQL 密码配置 - [ ] 修改了数据库名称(如果不是 ry-vue) - [ ] 修改了 Redis 密码(如果有) - [ ] 确认 MySQL 端口是 3316 - [ ] 确认 Redis 端口是 6379 - [ ] 在 MySQL 中创建了数据库 - [ ] 导入了数据库初始化脚本 - [ ] MySQL 允许远程连接 - [ ] Redis 允许远程连接 完成以上检查后,运行 `docker-compose up -d` 即可启动服务。