Ruby on rails Ruby on Rails应用程序的Docker云服务链接
我正在尝试docker cloud(以前是tutum)部署一个rails应用程序,该应用程序使用HttpParty从另一个REST API(也部署在docker cloud中)获取数据。因此,代码如下所示:Ruby on rails Ruby on Rails应用程序的Docker云服务链接,ruby-on-rails,ruby,docker,docker-compose,httparty,Ruby On Rails,Ruby,Docker,Docker Compose,Httparty,我正在尝试docker cloud(以前是tutum)部署一个rails应用程序,该应用程序使用HttpParty从另一个REST API(也部署在docker cloud中)获取数据。因此,代码如下所示: def get_service_response response = HTTParty.get("#{api_service_url}/foo/]" end def self.api_service_url ENV['SERVICE_URL'] end 我们正在运行两个HAPr
def get_service_response
response = HTTParty.get("#{api_service_url}/foo/]"
end
def self.api_service_url
ENV['SERVICE_URL']
end
我们正在运行两个HAProxies,一个用于rails web,另一个用于REST API。因此,Stackfile如下所示:
web:
image: organization/web-image
ports:
- "3000:3000"
tags:
- deploy_tag
links:
- haproxy-service
environment:
SERVICE_URL: haproxy-service
service:
image: organization/service-image
ports:
- "8080:8080"
tags:
- deploy_tag
haproxy-web:
image: 'dockercloud/haproxy:latest'
environment:
- BACKEND_PORT=3000
- BALANCE=roundrobin
links:
- web
ports:
- '80:80'
tags:
- deploy_tag
haproxy-service:
image: 'dockercloud/haproxy:latest'
environment:
- BACKEND_PORT=8080
- BALANCE=roundrobin
links:
- service
ports:
- "8000:8000"
tags:
- deploy_tag
但是,我的get\u service\u response
方法失败,出现以下错误:
Errno::ECONNREFUSED (Failed to open TCP connection to :80 (Connection refused - connect(2) for nil port 80)):
当我试图从web容器中的终端卷曲时,我能够看到来自服务的响应
echo $SERVICE_URL
# displays haproxy-service
curl $SERVICE_URL/foo
#I see the expected response
我想知道为什么rails应用程序无法从httparty调用中评估服务链接。要覆盖
httparty
中的base\u uri
(在我们的例子中是Nil
),我们需要启动路径以http://
或https://
进行查询。我们通过如下设置env变量解决了上述问题:
environment:
SERVICE_URL: http://haproxy-service