我正在创建用于Rails开发的Docker环境,但是在postgres和solr彼此连接时遇到了一些困难,并且正在寻找有关修复方法的指导。
我已经创建了一个docker-compose文件,以及用于查看某些页面的rails环境。这是我的docker-compose文件:
app:
build: .
command: rails server -p 3000 -b '0.0.0.0'
volumes:
- .:/app
ports:
- "3000:3000"
links:
- postgres
- solr
postgres:
image: postgres:10.7
ports:
- "5432:5432"
solr:
image: solr:8.1.1
ports:
- "8983:8983"
links:
- postgres
但是,任何类似rake db:seed或rake db:populate:rake的任务都会失败,并显示错误消息
Errno::EADDRNOTAVAIL: Failed to open TCP connection to localhost:8983 (Cannot assign requested address - connect(2) for "localhost" port 8983)
我希望该端口可用,因为在我的计算机上,我可以转到localhost:8983 / solr并能够看到solr管理员窗口,但是由于某些原因,当我运行rake时,postgres无法找到solr。命令。对此有任何帮助将不胜感激,因为我目前仍处于困境,不知道该怎么办。
答案 0 :(得分:0)
这里有2分:
--link
已过时,建议您删除--links
中的所有docker-compose.yaml
配置。 Compose将为您设置一个自定义网桥,并自动添加使您的服务可以互相访问的dns,请参见this
在app
服务中,我想您会使用localhost:8983
之类的东西来访问solr service
。您可以更改代码以使用solr:8983
,然后内部dns将引导您的应用查找solr
服务。