[英]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.