修改API_OPENIM_PORT至40002后登录报错的技术求助
问题分析与修复方案
错误核心解读
connection reset by peer 表示调用登录接口的服务尝试连接 172.28.0.1:40002 时,目标端口的服务直接断开了连接。本质是OpenIM的API服务要么没在40002端口正常监听,要么网络链路存在拦截。
排查与修复步骤
确认容器内服务监听状态
进入OpenIM API服务容器,执行命令检查端口监听情况:docker exec -it <openim-api容器名> netstat -tulpn如果没有进程监听40002端口,说明配置未生效:
- 核对
.env文件中API_OPENIM_PORT=40002是否被容器正确加载,可通过docker inspect <容器名>查看环境变量 - 检查OpenIM配置文件(如
config/config.yaml)的端口配置是否同步修改,部分服务需重启后才会读取新配置
- 核对
检查Docker端口映射规则
查看docker-compose.yml中的端口映射,确保存在:ports: - "40002:40002"若映射错误,修改后重启容器:
docker compose down && docker compose up -d验证宿主机与容器的网络连通性
在宿主机执行命令测试端口:nc -zv 172.28.0.1 40002 # 或用telnet telnet 172.28.0.1 40002连接失败则检查:
- 宿主机防火墙/安全组是否放行40002端口
- Docker网络模式是否存在冲突(如host模式下端口被其他进程占用)
排查端口占用情况
在宿主机执行命令查看40002端口的占用进程:lsof -i :40002 # 或用ss ss -tulpn | grep 40002若有其他进程占用,可终止该进程或为OpenIM更换未被占用的端口
查看服务启动日志
检查OpenIM API服务的日志,排查启动异常:docker logs <openim-api容器名>常见问题包括配置文件格式错误、依赖服务连接失败等,这些都会导致服务看似启动但未正常监听端口
内容的提问来源于stack exchange,提问作者冯文轩
相关产品推荐
相关产品推荐

