基于Docker安装Solr 9.2时遭遇JAVA_HOME配置错误问题
解决Solr 9.2.1 Docker部署中JAVA_HOME路径不存在的问题
问题原因
Solr 9.x官方Docker镜像已内置符合要求的Java环境(Java 11+),但容器会默认继承宿主机的JAVA_HOME环境变量,导致Solr尝试访问宿主机的Java路径(如/opt/java/openjdk),而该路径在容器内部并不存在,从而触发启动错误。
解决方案
1. 在Docker Compose中显式清除JAVA_HOME
在每个Solr服务的environment字段中添加JAVA_HOME: "",覆盖并清除从宿主机继承的该变量,让Solr自动使用容器内置的Java环境:
修改后的Solr服务配置示例(以solr1为例):
solr1: image: solr:9.2.1 container_name: solr1 ports: - "8983:8983" environment: ZK_HOST: "zoo1:2181" SOLR_JAVA_MEM: "-Xms512m -Xmx2g" SOLR_HOST: "linux10" JAVA_HOME: "" # 新增:清除继承的JAVA_HOME变量 networks: - solr depends_on: - zoo1 command: solr -f -cloud volumes: - solr1-data:/var/solr
对solr2服务做同样修改,添加JAVA_HOME: ""到环境变量配置中。
2. 排查额外的环境变量传递场景
检查是否存在以下情况导致宿主机JAVA_HOME被传入容器:
- Docker Compose配置中使用了
env_file加载包含JAVA_HOME的文件 - 启动容器时通过
--env-file参数或docker-compose run的--env选项传递了JAVA_HOME - Docker守护进程默认配置中自动传递
JAVA_HOME变量
确保上述场景均未发生,避免宿主机环境变量干扰容器内部运行。
验证修改
执行命令重新部署:
docker-compose down docker-compose up -d
查看Solr容器日志确认启动状态:
docker logs solr1
内容的提问来源于stack exchange,提问作者Subhasis Patra
相关产品推荐
相关产品推荐

