目 录CONTENT

文章目录

docker compose 搭建Solr生产环境

Jinty
2024-04-10 / 0 评论 / 0 点赞 / 68 阅读 / 11003 字

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

访问测试

http://ip:8983/solr

配置权限

所有身份验证、授权和审计日志记录插件都可以与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

参考资料

  1. Installing Solr :: Apache Solr Reference Guide

  2. Solr in Docker :: Apache Solr Reference Guide

  3. Securing Solr :: Apache Solr Reference Guide

  4. Configuring Authentication and Authorization :: Apache Solr Reference Guide

  5. rule-based-authorization-plugin.adoc at main · apache/solr · GitHub

  6. docker-solr/Docker-FAQ.md 在 master ·docker-solr/docker-solr --- docker-solr/Docker-FAQ.md at master · docker-solr/docker-solr (github.com)

  7. 卷顶级元素 |Docker 文档 --- Volumes top-level element | Docker Docs

  8. Getting Started | Apache Solr Reference Guide 8.11

0

评论区