Flask docker - equests.exceptions.ConnectionError: HTTPConnectionPool(host='localhost', port=8080): url 超出最大重试次数:/users

Aav*_*vik 0 flask docker

我有 python Flask 应用程序,它监听在 8080 上运行的另一个微服务。当我作为 Flask 应用程序运行时,它可以从 http://localhost:8080/users 获取。

但是当我在 docker 内部运行时它失败了

requests.exceptions.ConnectionError: HTTPConnectionPool(host='localhost', port=8080): Max retries exceeded with url: /users (Caused by NewConnectionError('<urllib3.connection.HTTPConnection object at 0x7f53804b5dc0>: Failed to establish a new connection: [Errno 111] Connection refused'))
Run Code Online (Sandbox Code Playgroud)

在行:

File "/alert.py", line 45, in get_users
    r = requests.get('http://localhost:8080/users',verify=False)
Run Code Online (Sandbox Code Playgroud)

这是我的主要代码:

if __name__ == '__main__':
    app.logger.setLevel(logging.INFO)
    data = create_data()
    port = os.getenv('PORT')
    app.run(debug=True, host='0.0.0.0', port=port)
Run Code Online (Sandbox Code Playgroud)

Docker 脚本:

#!/bin/bash
docker build -t covid_service .
docker run -p 5000:5000 covid_service
Run Code Online (Sandbox Code Playgroud)

Docker 文件:

FROM python:3
ADD alert.py /
RUN pip install flask
RUN pip install requests
EXPOSE 5000
CMD [ "python", "./alert.py" ]
Run Code Online (Sandbox Code Playgroud)

请提供任何帮助

Adi*_*iii 6

equests.exceptions.ConnectionError: HTTPConnectionPool(host='localhost', port=8080): url 超出最大重试次数: /users (由 NewConnectionError('<urllib3.connection.HTTPConnection object at 0x7f53804b5dc0> 引起): 无法建立新连接: [Errno 111] 连接被拒绝'))

您无法使用 访问另一个容器localhostlocalhost这意味着 Flask 应用程序容器而不是另一个微服务。

在 Linux上将其更改localhostHOST_IPhost.docker.internal ,或在 Windows 和 Mac 上使用。

r = requests.get('http://host.docker.internal:8080/users',verify=False)
Run Code Online (Sandbox Code Playgroud)