代码之家  ›  专栏  ›  技术社区  ›  designtocode

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

  •  0
  • designtocode  · 技术社区  · 4 年前

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

    {
      "responseHeader":{
        "status":0,
        "QTime":0},
      "errorMessages":["No authentication configured"]}
    

    安全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启动后复制的,但不确定如何在容器上获取安全文件,或者正确的方式应该是什么。

    任何帮助、指导或建议都将不胜感激。

    我看过的指南:

    0 回复  |  直到 4 年前
        1
  •  0
  •   designtocode    4 年前

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

    docker撰写。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:
    

    索尔。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安全。上海:

    这将通过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时,一切都如期进行,它显示了登录屏幕。我希望这能帮助其他试图解决这个问题的人。