簡體   English   中英

Solr在帶有黑子導軌的單獨的Docker容器上

[英]Solr on a separate docker container with sunspot-rails

我正在嘗試將可運行的Rails應用程序移至docker環境。

遵循UNIX(/ docker)哲學,我希望每個服務都在其自己的容器中。

我設法使redis和postgres正常工作,但是我努力使slor和rails互相交談。

執行該行時在文件app/models/spree/sunspot/search_decorator.rb

@solr_search.execute

控制台上出現以下錯誤:

Errno::EADDRNOTAVAIL (Cannot assign requested address - connect(2) for "localhost" port 8983):

在研究解決方案時,我發現人們只是在與Rails應用程序相同的容器中安裝solr。 但我寧願將其放在單獨的容器中。

這是我的config/sunspot.yml

development:
  solr:
    hostname: localhost
    port: 8983
    log_level: INFO
    path: /solr/development

docker-compose.yml文件

version: '2'
services:
  db:
    (...)

  redis:
    (...)

  solr:
    image: solr:7.0.1

    ports:
      - "8983:8983"

    volumes:
      - solr-data:/opt/solr/server/solr/mycores

    entrypoint:
      - docker-entrypoint.sh
      - solr-precreate
      - mycore

    networks:
      - backend

  app:
    build: .

    env_file: .env

    environment:
      RAILS_ENV: $RAILS_ENV

    depends_on:
      - db
      - redis
      - solr

    ports:
      - "3000:3000"

    tty: true

    networks:
      - backend

volumes:
  solr-data:
  redis-data:
  postgres-data:

networks:
  backend:
    driver: bridge

有什么建議么?

您的config / sunspot.yml應該具有以下內容:

development:
  solr:
    hostname: solr # since our solr instance is linked as solr
    port: 8983
    log_level: WARNING
    solr_home: solr
    path: /solr/mycore 
    # this path comes from the last command of our entrypoint as
    # specified in the last parameter for our solr container

如果你看到

Solr::Error::Http (RSolr::Error::Http - 404 Not Found
Error:     Not Found

URI: http://localhost:8982/solr/development/select?wt=json

使用管理界面在以下位置創建新核心:

http:// localhost:8982 / solr /#/〜cores

或使用以下命令:

docker-compose exec solr solr create_core -c development

我為此寫了一篇博客文章: https : //blog.koley.in/2018/searching-in-rails-with-solr-sunspot-and-docker

希望對以后來這里的人有所幫助。

當您在docker-compose文件中聲明服務時,容器將使用其名稱作為主機名。 因此,您的solr服務將在backend網絡內部以solr

我從您的錯誤中看到的是,ruby代碼嘗試連接到localhost:8983 ,而它應該連接到solr:8983

也許您還需要在config/sunspot.yml更改主機名,但是我不使用solr,因此我不確定。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM