You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spring Boot Docker容器向Solr Docker容器添加文档失败排查

容器化Spring Boot连接Solr失败的排查方向

1. Solr服务未在Spring Boot启动前就绪

直接通过docker run启动两个容器时,Solr启动需要加载内核、初始化服务,耗时比Spring Boot长。如果Spring Boot在Solr完全就绪前就尝试初始化SolrClient或调用相关方法,可能导致连接失败,甚至服务初始化异常,后续业务代码根本没执行到,自然看不到日志。

验证方法:先启动Solr容器,等待5-10分钟(或通过docker logs solr-container查看日志,确认出现Started Solr server on port 8983类的就绪提示),再启动Spring Boot容器,测试功能是否正常。

2. Solr容器中缺少目标Core "gendoi"

本地运行时你可能已经手动创建了gendoi Core,但默认启动的Solr容器没有这个Core。如果SolrClient初始化时依赖该Core,或者调用add方法时指定了不存在的Core,会导致异常,但如果异常发生在日志输出之前,就看不到你写的打印信息。

解决方法:启动Solr容器时自动创建Core,修改启动命令:

docker run --name solr-container --network mynetwork -d -p 8983:8983 solr solr-create -c gendoi

3. Spring Boot容器日志未正确输出

容器化环境下,Spring Boot的日志配置可能未将System.out的输出定向到容器标准输出,导致你看不到自定义的打印日志。此时代码可能正常执行或抛出异常,但日志被写入了容器内的文件而非控制台。

验证方法:执行docker logs spring-app查看容器的完整日志,检查是否有Solr相关的异常信息或初始化日志。

4. 网络连通性异常(同一网络下的隐性问题)

虽然两个容器在同一网络,但可能存在DNS解析失败或端口未开放的情况:

  • 进入Spring Boot容器,测试网络连通性:
    docker exec -it spring-app ping solr-container
    docker exec -it spring-app curl http://solr-container:8983/solr/
    
  • 检查两个容器是否确实在同一网络:
    docker inspect solr-container | grep -A5 Networks
    docker inspect spring-app | grep -A5 Networks
    

5. Spring Boot配置未正确加载

容器化时,可能存在配置文件未打包到镜像、或环境变量覆盖了配置的情况,导致Solr地址配置错误。

验证方法:进入Spring Boot容器,查看配置文件内容:

docker exec -it spring-app cat /app/application.properties  # 路径根据你的镜像结构调整

确认spring.data.solr.host=http://solr-container:8983/solr/配置存在且正确。


内容的提问来源于stack exchange,提问作者Syed Faraz Hasan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.13 13:13:20