【问题标题】:Postgres fails to connect to a solr Docker containerPostgres 无法连接到 solr Docker 容器
【发布时间】:2019-08-12 22:05:38
【问题描述】:

我正在为 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:all 这样的任何 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命令。任何帮助都将不胜感激,因为我目前陷入困境并且真的不知道该怎么做。

【问题讨论】:

    标签: ruby-on-rails postgresql docker solr


    【解决方案1】:

    这里有2点:

    1. --link 已弃用,建议您删除所有--links 配置在docker-compose.yaml 中。 Compose 会为你设置一个自定义的网桥并自动添加 dns 使你的服务可以互相访问,见this

    2. app 服务中,对于你的rails 代码,我猜你使用localhost:8983 之类的东西来访问solr service。您可以更改代码以使用solr:8983,然后内部 dns 将引导您的应用程序找到solr 服务。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-06-06
      • 2019-08-11
      • 1970-01-01
      • 2020-11-20
      • 2020-06-06
      • 2019-11-15
      • 1970-01-01
      相关资源
      最近更新 更多