wodby/solrSolr 是一款基于 Apache Lucene™ 构建的流行、高性能开源企业级搜索平台。本 Docker 镜像封装了 Solr 服务,提供开箱即用的部署方案,适用于快速搭建搜索服务、索引管理及数据检索场景。镜像旨在简化 Solr 的部署流程,支持灵活配置和扩展,满足不同规模的企业搜索需求。
从 Docker Hub 拉取官方维护的 Solr 镜像(基于 wodby/solr 仓库):
bashdocker pull wodby/solr:latest # 拉取最新版本,建议指定具体版本号(如 9.4.0)以避免兼容性问题
通过 docker run 命令启动单节点 Solr 服务,默认创建一个核心(core)并暴露 Web 管理界面:
bashdocker run -d \ --name solr \ -p 8983:8983 \ # 映射 Solr 默认端口(8983)到主机 -e SOLR_CORE=mycore \ # 指定初始化核心名称(首次启动时自动创建) -v solr-data:/var/solr/data \ # 挂载数据卷持久化索引数据 wodby/solr:latest
启动后,通过 http://localhost:8983 访问 Solr Admin UI,核心 mycore 已自动创建。
使用 docker-compose.yml 配置更复杂的部署(如指定堆大小、日志级别、持久化路径等):
yamlversion: '3.8' services: solr: image: wodby/solr:9.4.0 # 指定具体版本 container_name: solr restart: always # 服务异常时自动重启 ports: - "8983:8983" # 管理界面及 API 端口 volumes: - ./solr-data:/var/solr/data # 本地目录挂载,持久化索引数据 - ./solr-config:/opt/solr/server/solr/configsets # 挂载自定义配置集(可选) environment: - SOLR_CORE=mycore # 初始化核心名称 - SOLR_HEAP_SIZE=2g # JVM 堆大小(根据服务器资源调整,建议为物理内存的 50%) - SOLR_LOG_LEVEL=INFO # 日志级别(DEBUG/INFO/WARN/ERROR) - SOLR_JAVA_MEM="-Xms2g -Xmx2g" # 自定义 JVM 内存参数(覆盖 SOLR_HEAP_SIZE) - SOLR_PORT=8983 # 容器内服务端口(默认 8983,一般无需修改) networks: - solr-network # 自定义网络隔离 networks: solr-network: driver: bridge volumes: solr-data: # 若使用命名卷,需提前创建:docker volume create solr-data
启动命令:
bashdocker-compose up -d # 后台启动服务 docker-compose logs -f # 查看实时日志
除启动时通过 SOLR_CORE 自动创建核心外,也可通过 Solr Admin UI 或命令行手动管理:
bashdocker exec -it solr solr create_core -c newcore -d basic_configs # 使用默认配置集创建核心 newcore
bashdocker exec -it solr solr delete_core -c newcore
如需修改索引字段(如分词器、字段类型),可挂载自定义配置集(configsets):
./solr-config/myconfig),包含 solrconfig.xml(索引配置)和 schema.xml(字段定义);docker-compose.yml 中挂载该目录到容器内的 /opt/solr/server/solr/configsets:
yamlvolumes: - ./solr-config:/opt/solr/server/solr/configsets
bashdocker exec -it solr solr create_core -c mycore -d /opt/solr/server/solr/configsets/myconfig
| 环境变量名 | 默认值 | 描述 |
|---|---|---|
SOLR_CORE | 空 | 启动时自动创建的核心名称,若为空则需手动创建核心。 |
SOLR_HEAP_SIZE | 512m | Solr JVM 堆大小(如 2g),优先级低于 SOLR_JAVA_MEM。 |
SOLR_JAVA_MEM | 空 | 自定义 JVM 内存参数(如 -Xms2g -Xmx2g),覆盖 SOLR_HEAP_SIZE。 |
SOLR_LOG_LEVEL | INFO | 日志级别,可选 DEBUG/INFO/WARN/ERROR。 |
SOLR_PORT | 8983 | 容器内 Solr 服务端口,需与端口映射保持一致。 |
SOLR_AUTH_TYPE | 空 | 认证类型,可选 basic(Basic Auth),启用需配合 SOLR_AUTH_USER 和 SOLR_AUTH_PASSWORD。 |
SOLR_AUTH_USER | 空 | Basic Auth 用户名(仅 SOLR_AUTH_TYPE=basic 时生效)。 |
SOLR_AUTH_PASSWORD | 空 | Basic Auth 密码(仅 SOLR_AUTH_TYPE=basic 时生效)。 |
SOLR_ZK_HOST | 空 | SolrCloud 模式下 ZooKeeper 集群地址(如 zk1:2181,zk2:2181/solr)。 |
Solr 的索引数据默认存储在容器内的 /var/solr/data 目录,为避免容器重启后数据丢失,需通过数据卷挂载持久化该目录:
yamlvolumes: - solr-data:/var/solr/data # 命名卷由 Docker 管理,路径在 `/var/lib/docker/volumes/`
yamlvolumes: - ./solr-data:/var/solr/data # 本地目录需确保权限正确(如 `chmod 777 ./solr-data`)
生产环境需启用认证以保护管理界面和 API,通过环境变量配置:
yamlenvironment: - SOLR_AUTH_TYPE=basic - SOLR_AUTH_USER=admin - SOLR_AUTH_PASSWORD=SecurePassword123!
访问时需通过 http://admin:SecurePassword123!@localhost:8983 认证。
通过 Docker 网络限制 Solr 服务仅允许内部应用访问,避免直接暴露公网:
yamlnetworks: - backend-network # 与应用服务共享同一网络,不暴露 8983 端口到主机
wodby/solr:9.4.0),避免 latest 标签自动更新导致兼容性问题。SOLR_HEAP_SIZE(建议不超过物理内存的 50%),并配置 CPU 限制(如 cpus: 2)。/var/solr/data 目录(如通过 docker exec solr tar -czf /backup/solr-data-$(date +%F).tar.gz /var/solr/data)。

manifest unknown 错误
TLS 证书验证失败
DNS 解析超时
410 错误:版本过低
402 错误:流量耗尽
身份认证失败错误
429 限流错误
凭证保存错误
来自真实用户的反馈,见证轩辕镜像的优质服务