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
服务将作为solr
在backend
networking中可用。
我从你的错误中看到的是,ruby代码试图连接localhost:8983
,而它应该连接到solr:8983
。
也许你还需要在config/sunspot.yml
里面改变你的主机名,但是我不能和solr一起工作,所以我不确定这个。