使用bitnami solr镜像需挂载/bitnami实现全量持久化,配合命名volume或宿主机目录(注意uid 1001权限);手动创建core后拷贝conf目录并挂载,启用smartcn分词器需修改挂载的solrconfig.xml和managed-schema,推荐用docker-compose统一管理。

直接用 Docker 运行 Solr 并实现数据和配置持久化,关键不是只跑起来,而是让索引、core、schema、分词配置这些内容在容器重启或重建后不丢。核心就两点:挂载正确的路径 + 保证权限和初始化逻辑正确。
用 volume 挂载 /bitnami 实现基础持久化
Bitnami 官方 Solr 镜像(如 bitnami/solr:9.5.0)默认把所有运行时数据、配置、core 目录都放在 /bitnami 下。只要把这个路径挂载为 Docker volume 或宿主机目录,就能保住全部状态。
- 推荐方式:用命名 volume(Docker 自动管理,跨平台、易备份)
docker run -d --name solr -p 8983:8983 -v solr_data:/bitnami bitnami/solr:9.5.0 - 开发调试时也可挂载宿主机目录(路径需绝对)
docker run -d --name solr -p 8983:8983 -v /path/to/my-solr-data:/bitnami bitnami/solr:9.5.0 - ⚠️ 注意:宿主机目录需确保 UID 1001 可写(非 root 用户启动的容器),可提前执行:
sudo chown -R 1001:1001 /path/to/my-solr-data
手动创建 core 并同步配置到宿主机
首次启动后,Solr 默认不带任何 core。你需要进容器创建,再把生成的配置拷贝出来,后续才可复用。
- 启动容器后,创建一个名为 mycore 的 core:
docker exec solr solr create -c mycore - 确认 core 已生成:
docker exec solr ls /opt/solr/server/solr/mycore/conf/(应含 solrconfig.xml、managed-schema 等) - 把整个 conf 目录复制到宿主机(比如 /data/solr/mycore/conf):
docker cp solr:/opt/solr/server/solr/mycore/conf /data/solr/mycore/ - 下次启动前,把该目录挂载进容器对应位置(需额外 -v):
-v /data/solr/mycore/conf:/opt/solr/server/solr/mycore/conf:ro
配置中文分词(smartcn)并固化到持久路径
Bitnami 镜像已内置 smartcn 分词器 jar(位于 /opt/solr/contrib/analysis-extras/lucene-libs/),只需在配置中启用即可,但必须确保修改的是挂载后的配置文件,而非容器内只读层。
- 编辑宿主机上的
/data/solr/mycore/conf/solrconfig.xml,在<config></config>内添加:<lib dir="${solr.install.dir:../../../..}/contrib/analysis-extras/lucene-libs/" regex=".*smartcn.*\.jar"></lib> - 在
managed-schema中定义 FieldType:<fieldtype name="text_zh" class="solr.TextField" positionincrementgap="100"><br><analyzer type="index"><br><tokenizer class="solr.SmartChineseTokenizerFactory"></tokenizer><br></analyzer><br><analyzer type="query"><br><tokenizer class="solr.SmartChineseTokenizerFactory"></tokenizer><br></analyzer><br></fieldtype>
- 保存后重启容器:
docker restart solr
用 docker-compose 统一管理更可靠
把镜像、端口、卷、配置挂载全部声明在 docker-compose.yml 中,避免命令行遗漏,也方便团队协作和 CI/CD。
- 示例片段:
solr:
image: bitnami/solr:9.5.0
ports:
- "8983:8983"
volumes:
- solr_data:/bitnami
- ./conf/mycore:/opt/solr/server/solr/mycore/conf:ro
volumes:
solr_data: - 首次启动:
docker-compose up -d
然后执行docker-compose exec solr solr create -c mycore创建 core - 后续修改配置只需更新本地
./conf/mycore下的文件,重启服务即生效











