澄清API请求的Docker容器IP地址[副本]

plicqrtu  于 2023-01-08  发布在  Docker
关注(0)|答案(2)|浏览(159)
    • 此问题在此处已有答案**:

Python requests in Docker Compose containers(1个答案)
3天前关闭。
我希望能够连接到一个第三方. NET API,我正在运行作为一个容器内的docker图像。当我连接到我的浏览器上的ip地址和端口,它的工作,但当我试图运行一个在python中的get请求,它没有。我不知道我做错了什么。
Django python应用程序是容器中的一个映像,使用0.0.0.0:8000。
这是我在一个容器中运行的. NET图像的docker-compose. yml文件:

mt4rest:
    image: mt4rest:latest
    ports:
      - "0.0.0.0:5000:80"

以下是根据 Docker 检查的端口

"Ports": {
                "443/tcp": null,
                "80/tcp": [
                    {
                        "HostIp": "0.0.0.0",
                        "HostPort": "5000"
                    }
                ]
            },

当我奔跑

http://0.0.0.0:5000/Ping

http://127.0.0.1:5000/Ping

在我的浏览器中,当我在Python中运行相同的端点时,我得到了OK:

response = requests.get('http://0.0.0.0:5000/Ping')

response = requests.get('http://127.0.0.1:5000/Ping')

我收到以下错误:

requests.exceptions.ConnectionError: HTTPConnectionPool(host='0.0.0.0', port=5000):
Max retries exceeded with url: /Ping (Caused by
NewConnectionError('<urllib3.connection.HTTPConnection object at 0x7fe7aa5af640>: 
Failed to establish a new connection: [Errno 111] Connection refused'))

requests.exceptions.ConnectionError: HTTPConnectionPool(host='127.0.0.1', port=5000): 
Max retries exceeded with url: /Ping (Caused by 
NewConnectionError('<urllib3.connection.HTTPConnection object at 0x7f6322e2b640>: 
Failed to establish a new connection: [Errno 111] Connection refused'))

我理解这意味着没有找到请求的地址。
我不知道我做错了什么。

b0zn9rqh

b0zn9rqh1#

让我们把你的主机叫做HOST_BASE。你有两个容器,一个在主机上公开5000。它的HOST_BASE:5000。另一个是你的python应用容器。
现在,您正在主机HOST_BASE上的container中运行另一个python-app。http://0.0.0.0:5000,不可访问。注意:它的0.0.0.0是容器本身的本地主机。
您希望连接到HOST_BASE:5000,而不是localhost0.0.0.0您需要配置两个容器之间的网络连接。或者,为简单起见,在运行两个容器时使用--network host
希望能有所帮助。

hgb9j2n6

hgb9j2n62#

关于stackoverflow这个问题有一个可接受的答案,它解决了这个问题:
Python requests in Docker Compose containers

相关问题