Solr镜像准备
查询Solr官方镜像
docker search --filter is-official=true solr
获取Solr最新镜像
docker pull solr
或者 docker pull sol:9.5.0
检查下载
docker images | grep solr
Solr 安装(docker compose方式)
dokcer-compose.yaml准备
dokcer-compose.yaml:
version: '3'
services:
solr:
image: solr
ports:
- "8983:8983"
volumes:
- /opt/docker-yaml/solr/data:/var/solr
command:
- solr-precreate
- gettingstarted
volumes:
data:
启动Solr服务
docker compose up -d
问题:
[root@VM-8-14-centos solr]# docker compose up
[+] Running 1/0
✔ Container solr-solr-1 Created 0.0s
Attaching to solr-solr-1
solr-solr-1 | Cannot write to /var/solr as 8983:8983
solr-solr-1 | drwxr-xr-x 2 root root 4096 Apr 13 01:48 /var/solr
原因:映射的宿主机路径权限问题
解决:
chown 8983:8983 /opt/docker-yaml/solr/data -R
Docker persisted volum has no permissions (Apache Solr) - Stack Overflow
访问测试
配置权限
所有身份验证、授权和审计日志记录插件都可以与Solr一起使用,无论它是作为集群还是单节点安装运行。所有相关配置(包括用户和权限规则)都存储在名为
security.json
的文件中。使用SolrCloud时,此文件必须位于ZooKeeper结构的chroot位置。如果没有给出 chroot,那么它必须在根目录下。在独立模式下运行Solr(没有ZooKeeper)时,此文件必须位于$SOLR_HOME
目录中。从提取的存档中手动运行 Solr 时,这很可能是server/solr
.如果使用服务安装程序脚本,则其默认位置将为/var/solr/data
,可以使用提供给服务安装程序的选项进行更改。
[root@VM-8-14-centos solr]# docker ps | grep solr
f294e648a4f5 solr "docker-entrypoint.s…" 59 minutes ago Up 59 minutes 0.0.0.0:8983->8983/tcp, :::8983->8983/tcp solr-solr-1
[root@VM-8-14-centos solr]# docker exec -it f294e648a4f5 /bin/bash
solr@f294e648a4f5:/opt/solr-9.4.0$ ls
bin CHANGES.txt contrib docker example lib licenses LICENSE.txt modules NOTICE.txt prometheus-exporter README.txt server
准备security.json
文件:
{
"authentication":{
"blockUnknown":true,
"class":"solr.BasicAuthPlugin",
"credentials":{
"jcoo":"IV0EHq1OnNrj6gvRCwvFwTrZ1+z1oBbnQdiVC3otuq0= Ndd7LKvVBAaZIF0QAVi1ekCfAJXr1GGfLtRUXhgrF8c="
},
"realm":"admin",
"forwardCredentials":false
},
"authorization":{
"class":"solr.RuleBasedAuthorizationPlugin",
"permissions":[
{
"name":"all",
"role":"admin"
}
],
"user-role":{
"jcoo":"admin"
}
}
}
cp ./security.json /opt/docker-yaml/solr/data/data && chown 8983:8983 /opt/docker-yaml/solr/data/data/security.json
或者
docker cp ./security.json f294e648a4f5:/var/solr/data
docker compose restart
SolrRocks
默认账号jcoo,密码:SolrRocks,登录后进入安全管理界面管理账号及权限
如果是使用docker cp ./security.json f294e648a4f5:/var/solr/data
该方式开启权限
问题:
原因:文件归属权问题
解决:
docker exec -it -u root f294e648a4f5 /bin/bash
root@f294e648a4f5:/opt/solr-9.4.0# cd /var/solr/data/
root@f294e648a4f5:/var/solr/data# ll
total 16
drwxrwx--- 3 solr solr 4096 Apr 13 00:37 ./
drwxrwx--- 4 solr root 4096 Feb 18 11:32 ../
drwxr-xr-x 4 solr solr 4096 Feb 18 11:33 gettingstarted/
-rw-r--r-- 1 root root 493 Jan 9 13:47 security.json
root@f294e648a4f5:/var/solr/data# chown solr:solr /var/solr/data/* -R
Solr镜像容器目录说明
[root@VM-8-14-centos logs]# docker exec -it -u root 960eae120e42 /bin/bash
root@960eae120e42:/opt/solr-9.5.0# pwd
/opt/solr-9.5.0
root@960eae120e42:/opt/solr-9.5.0# ll
total 1216
drwxr-xr-x 1 root root 4096 Mar 28 02:49 ./
drwxr-xr-x 1 root root 4096 Mar 28 02:49 ../
drwxr-xr-x 1 root root 4096 Mar 28 02:49 bin/
-rw-r--r-- 1 root root 1092513 Feb 6 16:08 CHANGES.txt
lrwxrwxrwx 1 root root 17 Mar 28 02:49 contrib -> /opt/solr/modules/
drwxr-xr-x 1 root root 4096 Mar 28 02:49 docker/
drwxr-xr-x 4 root root 4096 Feb 7 20:12 example/
drwxr-xr-x 2 root root 4096 Feb 7 20:12 lib/
drwxr-xr-x 2 root root 61440 Feb 2 14:28 licenses/
-rw-r--r-- 1 root root 12646 Jan 22 15:15 LICENSE.txt
drwxr-xr-x 1 root root 4096 Mar 28 02:49 modules/
-rw-r--r-- 1 root root 30947 Jan 22 15:15 NOTICE.txt
drwxr-xr-x 5 root root 4096 Feb 7 20:12 prometheus-exporter/
-rw-r--r-- 1 root root 3040 Jan 22 15:15 README.txt
drwxr-xr-x 1 root root 4096 Feb 7 20:12 server/
root@960eae120e42:/opt/solr-9.5.0# ll /var/solr
total 20
drwxr-xr-x 4 solr solr 4096 Apr 13 02:08 ./
drwxr-xr-x 1 root root 4096 Mar 28 02:49 ../
drwxrwx--- 3 solr solr 4096 Apr 13 02:09 data/
-rw-r--r-- 1 solr solr 3931 Feb 7 20:12 log4j2.xml
drwxrwx--- 2 solr solr 4096 Apr 13 02:20 logs/
root@960eae120e42:/opt/solr-9.5.0# ll server/
total 228
drwxr-xr-x 1 root root 4096 Feb 7 20:12 ./
drwxr-xr-x 1 root root 4096 Mar 28 02:49 ../
drwxr-xr-x 2 root root 4096 Feb 7 20:12 contexts/
drwxr-xr-x 2 root root 4096 Feb 7 20:12 etc/
drwxr-xr-x 3 root root 4096 Feb 7 20:12 lib/
drwxr-xr-x 2 root root 4096 Feb 7 20:12 modules/
-rw-r--r-- 1 root root 3919 Feb 7 20:12 README.md
drwxr-xr-x 2 root root 4096 Feb 7 20:12 resources/
drwxr-xr-x 3 root root 4096 Feb 7 20:12 scripts/
drwxr-xr-x 1 root root 4096 Mar 28 02:49 solr/
drwxr-xr-x 3 root root 4096 Feb 7 20:12 solr-webapp/
-rw-r--r-- 1 root root 187110 Feb 7 20:12 start.jar
root@960eae120e42:/opt/solr-9.5.0# java -version
openjdk version "17.0.10" 2024-01-16
OpenJDK Runtime Environment Temurin-17.0.10+7 (build 17.0.10+7)
OpenJDK 64-Bit Server VM Temurin-17.0.10+7 (build 17.0.10+7, mixed mode, sharing)
more server/README.md
默认使用jetty容器,启动包: server/solr-webapp/webapp
依赖: server/solr-webapp/webapp/WEB-INF/lib/
核心使用的默认配置: server/solr/configsets/_default/
总结
以这种方式安装Solr的话 默认使用jetty容器启动的,如果要想使用域名访问的话需要单独配置jetty了
Jetty Documentation | The Eclipse Foundation
评论区