Docker Compose Solr 身份验证:未配置身份验证

Docker Compose Solr authentication: No authentication configured

我在 Docker 容器中向 Solr 添加身份验证时遇到问题。我尝试将 security.json 文件复制到 Solr 容器的 $SOLR_HOME 文件夹。但它在 http://localhost:8983/solr/admin/authentication:

返回响应
{
  "responseHeader":{
    "status":0,
    "QTime":0},
  "errorMessages":["No authentication configured"]}

security.json:

{
"authentication":{ 
   "blockUnknown": true, 
   "class":"solr.BasicAuthPlugin",
   "credentials":{"solr":"IV0EHq1OnNrj6gvRCwvFwTrZ1+z1oBbnQdiVC3otuq0= Ndd7LKvVBAaZIF0QAVi1ekCfAJXr1GGfLtRUXhgrF8c="}, 
   "realm":"My Solr users", 
   "forwardCredentials": false 
},
"authorization":{
   "class":"solr.RuleBasedAuthorizationPlugin",
   "permissions":[{"name":"security-edit",
      "role":"admin"}], 
   "user-role":{"solr":"admin"} 
}}

我正在复制卷中 docker-compose.yml 中的文件:

version: "3"
services:
  index:
    image: solr:8.11.1
    ports:
     - "8983:8983"
    volumes:
      - data:/var/solr
      - ./security/security.json:/opt/solr-8.11.1/server/solr/security.json
    command:
      - solr-precreate
      - archive_poc_core
volumes:
  data:

当我进入容器并检查文件是否包含设置时,我可以找到它。所以我不认为这是问题所在。我认为文件是在 solr 启动后复制的,但不确定如何在容器之前获取安全文件或正确的做法应该是什么。

如有任何帮助、指导或建议,我们将不胜感激。

我看过的指南:

在一位同事的帮助下,我设法完成了这项工作。我们最终使用 Zookeeper 来管理 Apache 方面的事情。

docker-compose.yml

version: "3"
services:
  solr1:
    build:
      context: .
      dockerfile: solr.Dockerfile
    container_name: solr1
    ports:
     - "8983:8983"
    volumes:
      - data:/var/solr
    environment:
      - ZK_HOST=zoo1:2181
    depends_on:
      - zoo1
    tty: true
    stdin_open: true
  zoo1:
    tty: true
    image: zookeeper:3.6.2
    container_name: zoo1
    restart: always
    hostname: zoo1
    ports:
      - 2181:2181
    environment:
      ZOO_MY_ID: 1
      ZOO_SERVERS: server.1=0.0.0.0:2888:3888;2181
volumes:
  data:

solr.Dockerfile:

它复制了我需要的文件,如 security.jsonsolr-security.sh。它还在构建时添加了入口点。

FROM solr:8.11.1

COPY security/security.json security.json
COPY scripts/solr-security.sh /usr/bin/solr-security.sh
ENTRYPOINT ["/usr/bin/solr-security.sh"]

solr-security.sh:

这通过 Zookeeper 执行 Solr 的身份验证,您可以在此处找到更多信息https://solr.apache.org/guide/8_11/authentication-and-authorization-plugins.html#in-solrcloud-mode

然后在身份验证完成后启动 Solr 的默认入口点。

#!/bin/bash
solr zk cp /opt/solr-8.11.1/security.json zk:security.json -z zoo1:2181
exec /opt/docker-solr/scripts/docker-entrypoint.sh "$@"

浏览到 Solr 时一切都按预期进行,它显示了登录屏幕。我希望这对试图解决此问题的其他人有所帮助。