【发布时间】:2020-08-22 07:39:28
【问题描述】:
我有两个使用 Flask 制作的微服务,分别在 localhost:3000 和 localhost:5000 上运行,它们工作正常并且在本地机器上通信良好,但在将它们容器化后,我遇到了以下错误。
requests.exceptions.ConnectionError: HTTPConnectionPool(host='localhost', port=3000): Max retries exceeded with url: /update (Caused by NewConnectionError('<urllib3.connection.HTTPConnection object at 0x7f2a08eaa850>: Failed to establish a new connection: [Errno 111] Connection refused'))
我遵循的容器化步骤如下。
$ sudo docker build -t history:0.1
$ sudo docker build -t calculation:0.1
$ sudo docker run -d -p 0.0.0.0:3000:3000 --name history history:0.1
$ sudo docker run -d -p 0.0.0.0:5000:5000 --name calculation calculation:0.1
$ curl -X GET 0.0.0.0:3000/hist
{
"hist": []
}
$ curl -X GET 0.0.0.0:5000/sum/5/6
Traceback (most recent call last):
File "/usr/local/lib/python3.8/site-packages/flask/app.py", line 2309, in __call__
return self.wsgi_app(environ, start_response)
File "/usr/local/lib/python3.8/site-packages/flask/app.py", line 2295, in wsgi_app
response = self.handle_exception(e)
File "/usr/local/lib/python3.8/site-packages/flask/app.py", line 1741, in handle_exception
reraise(exc_type, exc_value, tb)
File "/usr/local/lib/python3.8/site-packages/flask/_compat.py", line 35, in reraise
raise value
File "/usr/local/lib/python3.8/site-packages/flask/app.py", line 2292, in wsgi_app
response = self.full_dispatch_request()
File "/usr/local/lib/python3.8/site-packages/flask/app.py", line 1815, in full_dispatch_request
rv = self.handle_user_exception(e)
File "/usr/local/lib/python3.8/site-packages/flask/app.py", line 1718, in handle_user_exception
reraise(exc_type, exc_value, tb)
File "/usr/local/lib/python3.8/site-packages/flask/_compat.py", line 35, in reraise
raise value
File "/usr/local/lib/python3.8/site-packages/flask/app.py", line 1813, in full_dispatch_request
rv = self.dispatch_request()
File "/usr/local/lib/python3.8/site-packages/flask/app.py", line 1799, in dispatch_request
return self.view_functions[rule.endpoint](**req.view_args)
File "/app/calculate.py", line 15, in add
update(a,b,ans,'+')
File "/app/calculate.py", line 10, in update
requests.get('http://localhost:3000/update',json={"a":a,"b":b,"ans":ans,"operator":operator})
File "/usr/local/lib/python3.8/site-packages/requests/api.py", line 75, in get
return request('get', url, params=params, **kwargs)
File "/usr/local/lib/python3.8/site-packages/requests/api.py", line 60, in request
return session.request(method=method, url=url, **kwargs)
File "/usr/local/lib/python3.8/site-packages/requests/sessions.py", line 524, in request
resp = self.send(prep, **send_kwargs)
File "/usr/local/lib/python3.8/site-packages/requests/sessions.py", line 637, in send
r = adapter.send(request, **kwargs)
File "/usr/local/lib/python3.8/site-packages/requests/adapters.py", line 516, in send
raise ConnectionError(e, request=request)
requests.exceptions.ConnectionError: HTTPConnectionPool(host='localhost', port=3000): Max retries exceeded with url: /update (Caused by NewConnectionError('<urllib3.connection.HTTPConnection object at 0x7f2a08904040>: Failed to establish a new connection: [Errno 111] Connection refused'))
-->
这里的计算服务正在调用历史服务来更新历史中的数据。
我是 docker 新手。我该如何解决?
【问题讨论】:
标签: python linux docker flask microservices