【发布时间】:2020-05-01 06:08:19
【问题描述】:
我有一个在 Docker(M1) 中运行的应用程序。另一个在 localhost 上运行的应用程序(M2-Not Dockerized)。两者都是在端口 3000 和 3001 上运行的 Ruby on Rails 应用程序。我使用
从 M1 内部调用 M2response = http_client.post("127.0.0.1:3001", query, {}, options)
但我继续得到
Error: Failed to open TCP connection to 127.0.0.1:3001 (Connection refused - connect(2) for "127.0.0.1" port 3001), Backtrace: ["/usr/local/lib/ruby/2.5.0/net/http.rb:939:in `rescue in block in connect'", "/usr/local/lib/ruby/2.5.0/net/http.rb:936:in `block in connect'", "/usr/local/lib/ruby/2.5.0/timeout.rb:93:in `block in timeout'", "/usr/local/lib/ruby/2.5.0/timeout.rb:103:in `timeout'", "/usr/local/lib/ruby/2.5.0/net/http.rb:935:in `connect'"
如果我使用 -
response = http_client.post("localhost:3001", query, {}, options)
然后我得到
Error: Failed to open TCP connection to localhost:3001 (Cannot assign requested address - connect(2) for "localhost" port 3001), Backtrace: ["/usr/local/lib/ruby/2.5.0/net/http.rb:939:in `rescue in block in connect'", "/usr/local/lib/ruby/2.5.0/net/http.rb:936:in `block in connect'"
所以它从拒绝连接更改为无法分配请求的地址。
我可以通过分别从浏览器调用 localhost:3000 和 localhost:3001 来访问这两个应用程序。我假设它的发生是因为一个 Dockerized 应用程序调用了一个非 Dockerized 应用程序。有人可以建议如何在两者之间建立联系,我已经尝试了很多东西。我在 macOS Mojave 10.14.6 和 Ruby 2.5.0 上运行 Docker-2.1.0.5。如果需要任何其他信息,请告诉我。
【问题讨论】:
标签: ruby-on-rails ruby docker tcp