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



在Docker容器中将auth添加到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启动后复制的,但不确定如何在容器上预先获得安全文件,或者正确的方法应该是什么

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

我看过的指南:

  • https://solr.apache.org/guide/8_1/basic-authentication-plugin.html#enable-基本身份验证
  • https://solr.apache.org/guide/8_11/authentication-and-authorization-plugins.html#using-带solr的安全json

我在一位同事的帮助下成功地完成了这项工作。我们最终使用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模式

然后在身份验证完成后启动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时,一切都如预期一样,它显示了登录屏幕。我希望这能帮助其他试图解决这个问题的人。

最新更新