Docker化Solr配置集无法更新,如何实现彻底干净构建?
Docker化Solr配置集更新不生效的解决办法
核心问题原因
你配置了ZK_HOST环境变量,Solr会从ZooKeeper拉取配置集,而非使用容器本地或镜像内的文件。之前删除容器、镜像、卷的操作碰不到ZK里存储的旧配置,所以修改始终不生效。
解决步骤
1. 清理ZooKeeper中的旧配置集
- 进入ZooKeeper容器:
docker exec -it <zookeeper_container_id> zkCli.sh - 查看ZK中存储的Solr配置集:
ls /solr/configs - 删除目标旧配置集(比如
myconfig):rmr /solr/configs/myconfig - 退出ZK客户端:
quit
2. 重新上传本地配置集到ZK
启动Solr容器后,进入容器执行上传命令:
docker exec -it MySolr bash /opt/solr/server/scripts/cloud-scripts/zkcli.sh -zkhost zookeeper:2181 -cmd upconfig -confdir /opt/solr/server/solr/configsets/myconfig/conf -confname myconfig
如果是新配置集newconfig,替换对应的confdir和confname即可。
3. 彻底重建Solr环境
用docker-compose做彻底清理,避免本地缓存干扰:
# 停止容器并删除关联卷 docker-compose down -v # 清理旧的Solr镜像(避免构建缓存) docker rmi $(docker images | grep solr | awk '{print $3}') # 无缓存构建并启动 docker-compose build --no-cache solr && docker-compose up -d
额外检查项
- 确认你的Solr Dockerfile中,已经将本地修改后的
configsets目录复制到容器内,比如:COPY ./configsets /opt/solr/server/solr/configsets/ - 上传配置后,再次进入ZK客户端确认
/solr/configs下已存在目标配置集 - 新建Core时,即可在配置集列表中选择更新后的配置
内容的提问来源于stack exchange,提问作者Marco Frag Delle Monache
相关产品推荐
相关产品推荐

