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.json
和 solr-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 时一切都按预期进行,它显示了登录屏幕。我希望这对试图解决此问题的其他人有所帮助。
我在 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.json
和 solr-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 时一切都按预期进行,它显示了登录屏幕。我希望这对试图解决此问题的其他人有所帮助。