gpt4 book ai didi

ruby-on-rails - Solr 在一个单独的 docker 容器上,带有 sunspot-rails

转载 作者:行者123 更新时间:2023-12-02 18:44:29 26 4
gpt4 key购买 nike

我正在尝试将工作中的 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):

在研究解决方案时,我发现人们只是将 solr 安装在与他们的 Rails 应用程序相同的容器中。但我宁愿将它放在一个单独的容器中。

这是我的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/so​​lr/#/~cores

或使用以下命令:

docker-compose exec solr solr create_core -c development

我写了一篇关于此的博文:https://gaurav.koley.in/2018/searching-in-rails-with-solr-sunspot-and-docker

希望对后期来这里的人有帮助。

关于ruby-on-rails - Solr 在一个单独的 docker 容器上,带有 sunspot-rails,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46711327/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com