fix(config): Correct Nacos container IP configuration

This commit is contained in:
2026-03-13 18:02:31 +08:00
parent 373b313bda
commit e9120d2270
3 changed files with 70 additions and 0 deletions
+7
View File
@@ -184,6 +184,7 @@ services:
- SPRING_CLOUD_NACOS_DISCOVERY_PASSWORD=nacos
- SPRING_CLOUD_NACOS_CONFIG_USERNAME=nacos
- SPRING_CLOUD_NACOS_CONFIG_PASSWORD=nacos
- SPRING_CLOUD_NACOS_DISCOVERY_IP=${HOST_IP:-192.168.1.101}
- NACOS_SERVERS=${NACOS_SERVERS:-192.168.1.101:8848,192.168.1.102:8848,192.168.1.103:8848}
- SENTINEL_DASHBOARD_HOST=sentinel
- SENTINEL_DASHBOARD_PORT=8080
@@ -218,6 +219,7 @@ services:
- SPRING_CLOUD_NACOS_DISCOVERY_PASSWORD=nacos
- SPRING_CLOUD_NACOS_CONFIG_USERNAME=nacos
- SPRING_CLOUD_NACOS_CONFIG_PASSWORD=nacos
- SPRING_CLOUD_NACOS_DISCOVERY_IP=${HOST_IP:-192.168.1.101}
- NACOS_SERVERS=${NACOS_SERVERS:-192.168.1.101:8848,192.168.1.102:8848,192.168.1.103:8848}
- MYSQL_HOST=mysql
- MYSQL_PORT=3306
@@ -263,6 +265,7 @@ services:
- SPRING_CLOUD_NACOS_DISCOVERY_PASSWORD=nacos
- SPRING_CLOUD_NACOS_CONFIG_USERNAME=nacos
- SPRING_CLOUD_NACOS_CONFIG_PASSWORD=nacos
- SPRING_CLOUD_NACOS_DISCOVERY_IP=${HOST_IP:-192.168.1.101}
- MYSQL_HOST=mysql
- MYSQL_PORT=3306
- MYSQL_USERNAME=root
@@ -302,6 +305,7 @@ services:
- SPRING_CLOUD_NACOS_DISCOVERY_PASSWORD=nacos
- SPRING_CLOUD_NACOS_CONFIG_USERNAME=nacos
- SPRING_CLOUD_NACOS_CONFIG_PASSWORD=nacos
- SPRING_CLOUD_NACOS_DISCOVERY_IP=${HOST_IP:-192.168.1.101}
- MYSQL_HOST=mysql
- MYSQL_PORT=3306
- MYSQL_USERNAME=root
@@ -352,6 +356,7 @@ services:
- SPRING_CLOUD_NACOS_DISCOVERY_PASSWORD=nacos
- SPRING_CLOUD_NACOS_CONFIG_USERNAME=nacos
- SPRING_CLOUD_NACOS_CONFIG_PASSWORD=nacos
- SPRING_CLOUD_NACOS_DISCOVERY_IP=${HOST_IP:-192.168.1.101}
- MYSQL_HOST=mysql
- MYSQL_PORT=3306
- MYSQL_USERNAME=root
@@ -391,6 +396,7 @@ services:
- SPRING_CLOUD_NACOS_DISCOVERY_PASSWORD=nacos
- SPRING_CLOUD_NACOS_CONFIG_USERNAME=nacos
- SPRING_CLOUD_NACOS_CONFIG_PASSWORD=nacos
- SPRING_CLOUD_NACOS_DISCOVERY_IP=${HOST_IP:-192.168.1.101}
- MYSQL_HOST=mysql
- MYSQL_PORT=3306
- MYSQL_USERNAME=root
@@ -430,6 +436,7 @@ services:
- SPRING_CLOUD_NACOS_DISCOVERY_PASSWORD=nacos
- SPRING_CLOUD_NACOS_CONFIG_USERNAME=nacos
- SPRING_CLOUD_NACOS_CONFIG_PASSWORD=nacos
- SPRING_CLOUD_NACOS_DISCOVERY_IP=${HOST_IP:-192.168.1.101}
- MYSQL_HOST=mysql
- MYSQL_PORT=3306
- MYSQL_USERNAME=root
+7
View File
@@ -207,6 +207,7 @@ services:
- SPRING_CLOUD_NACOS_DISCOVERY_PASSWORD=nacos
- SPRING_CLOUD_NACOS_CONFIG_USERNAME=nacos
- SPRING_CLOUD_NACOS_CONFIG_PASSWORD=nacos
- SPRING_CLOUD_NACOS_DISCOVERY_IP=${HOST_IP:-192.168.1.102}
- NACOS_SERVERS=${NACOS_SERVERS:-192.168.1.101:8848,192.168.1.102:8848,192.168.1.103:8848}
- SENTINEL_DASHBOARD_HOST=sentinel
- SENTINEL_DASHBOARD_PORT=8080
@@ -236,6 +237,7 @@ services:
- SPRING_CLOUD_NACOS_DISCOVERY_PASSWORD=nacos
- SPRING_CLOUD_NACOS_CONFIG_USERNAME=nacos
- SPRING_CLOUD_NACOS_CONFIG_PASSWORD=nacos
- SPRING_CLOUD_NACOS_DISCOVERY_IP=${HOST_IP:-192.168.1.102}
- MYSQL_HOST=mysql
- MYSQL_PORT=3306
- MYSQL_USERNAME=root
@@ -275,6 +277,7 @@ services:
- SPRING_CLOUD_NACOS_DISCOVERY_PASSWORD=nacos
- SPRING_CLOUD_NACOS_CONFIG_USERNAME=nacos
- SPRING_CLOUD_NACOS_CONFIG_PASSWORD=nacos
- SPRING_CLOUD_NACOS_DISCOVERY_IP=${HOST_IP:-192.168.1.102}
- MYSQL_HOST=mysql
- MYSQL_PORT=3306
- MYSQL_USERNAME=root
@@ -314,6 +317,7 @@ services:
- SPRING_CLOUD_NACOS_DISCOVERY_PASSWORD=nacos
- SPRING_CLOUD_NACOS_CONFIG_USERNAME=nacos
- SPRING_CLOUD_NACOS_CONFIG_PASSWORD=nacos
- SPRING_CLOUD_NACOS_DISCOVERY_IP=${HOST_IP:-192.168.1.102}
- MYSQL_HOST=mysql
- MYSQL_PORT=3306
- MYSQL_USERNAME=root
@@ -364,6 +368,7 @@ services:
- SPRING_CLOUD_NACOS_DISCOVERY_PASSWORD=nacos
- SPRING_CLOUD_NACOS_CONFIG_USERNAME=nacos
- SPRING_CLOUD_NACOS_CONFIG_PASSWORD=nacos
- SPRING_CLOUD_NACOS_DISCOVERY_IP=${HOST_IP:-192.168.1.102}
- MYSQL_HOST=mysql
- MYSQL_PORT=3306
- MYSQL_USERNAME=root
@@ -403,6 +408,7 @@ services:
- SPRING_CLOUD_NACOS_DISCOVERY_PASSWORD=nacos
- SPRING_CLOUD_NACOS_CONFIG_USERNAME=nacos
- SPRING_CLOUD_NACOS_CONFIG_PASSWORD=nacos
- SPRING_CLOUD_NACOS_DISCOVERY_IP=${HOST_IP:-192.168.1.102}
- MYSQL_HOST=mysql
- MYSQL_PORT=3306
- MYSQL_USERNAME=root
@@ -442,6 +448,7 @@ services:
- SPRING_CLOUD_NACOS_DISCOVERY_PASSWORD=nacos
- SPRING_CLOUD_NACOS_CONFIG_USERNAME=nacos
- SPRING_CLOUD_NACOS_CONFIG_PASSWORD=nacos
- SPRING_CLOUD_NACOS_DISCOVERY_IP=${HOST_IP:-192.168.1.102}
- MYSQL_HOST=mysql
- MYSQL_PORT=3306
- MYSQL_USERNAME=root
+56
View File
@@ -617,6 +617,62 @@ environment:
- MYSQL_SERVICE_DB_NAME=nacos_config
```
### Q11: RocketMQ Broker 启动失败报 NullPointerException
**问题描述**:RocketMQ Broker 启动时报错:
```
java.lang.NullPointerException
at org.apache.rocketmq.broker.schedule.ScheduleMessageService.configFilePath
```
**原因**:
1. Docker 命名卷权限问题:官方镜像以 `rocketmq` 用户 (UID 3000) 运行,但命名卷默认属于 root
2. 存储路径配置问题:`delayOffsetStorePath` 等路径指向不存在的子目录
**解决方案**:
1. 在 docker-compose 中添加 `user: root`:
```yaml
rmqbroker:
image: apache/rocketmq:5.1.4
user: root # 添加此行
container_name: rmqbroker
```
2. 清理旧数据并重启:
```bash
docker compose -f docker-compose-node-02.yml rm -f -s rmqbroker
docker volume rm ha-ovp_rmqbroker_store ha-ovp_rmqbroker_logs
docker compose -f docker-compose-node-02.yml up -d rmqbroker
```
### Q12: Nacos 服务注册显示 Docker 内部 IP(假高可用问题)
**问题描述**:
- Nacos 控制台显示服务实例 IP 为 `172.18.0.x` 等 Docker 内部 IP
- 同一服务在不同节点只显示 1 个实例(IP 冲突覆盖)
- 跨节点服务调用失败
**原因**:Docker 桥接网络中,每个容器获得内部虚拟 IP。微服务使用容器 IP 注册到 Nacos,导致:
1. 不同节点的容器可能获得相同 IP,Nacos 认为是同一实例
2. Gateway 无法通过容器内部 IP 访问其他节点的服务
**解决方案**:在 docker-compose 中添加 `SPRING_CLOUD_NACOS_DISCOVERY_IP` 环境变量:
```yaml
# Node-01 (192.168.1.101)
video-gateway:
environment:
- SPRING_CLOUD_NACOS_DISCOVERY_IP=${HOST_IP:-192.168.1.101}
# Node-02 (192.168.1.102)
video-gateway:
environment:
- SPRING_CLOUD_NACOS_DISCOVERY_IP=${HOST_IP:-192.168.1.102}
```
**验证**:重启微服务后,Nacos 控制台应显示真实宿主机 IP(如 `192.168.1.101:9000`、`192.168.1.102:9000`)
---
## 七、日常运维