Solr在与太阳黑色轨道的一个分开的docker的容器

我正试图将一个工作的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): 

在研究解决scheme时,我发现人们只是将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 

有什么build议么?

在docker-compose文件中声明服务时,容器的名称将作为主机名。 所以你的solr服务将作为solrbackendnetworking中可用。

我从你的错误中看到的是,ruby代码试图连接localhost:8983 ,而它应该连接到solr:8983

也许你还需要在config/sunspot.yml里面改变你的主机名,但是我不能和solr一起工作,所以我不确定这个。

Interesting Posts