在Azure虚拟机上访问烧瓶应用程序超时

时间:2019-09-18 22:02:33

标签: azure docker flask virtual-machine

我有一个Flask应用程序在Azure vm上的docker容器中运行。

应用程序在端口5000上运行,我将该端口暴露给docker

CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                    NAMES
57cdce7b5b2b        auto_ml2:latest     "/bin/sh -c 'python3…"   6 seconds ago       Up 5 seconds        0.0.0.0:5000->5000/tcp   serene_mcnulty
mlcontainers2@automl:/$ 

我正在尝试进行以下API调用:

headers = {'content-type': 'application/json'}
url = "http://XX.XX.X.XX:5000/api/AutoML"
resp = requests.post(url,data=json.dumps(data), headers=headers )

但是过了一会儿,我得到一个超时错误:

Failed to establish a new connection: [Errno 110] Connection timed out'))

我认为该端口必须关闭,因此我为其添加了一条规则,并打开了80和5000-6000端口并重新启动VM

enter image description here

但是在此之后我得到了同样的错误。

编辑

我从VM对其进行了测试,它可以正常工作:

enter image description here

但是从远程请求中,我总是收到相同的错误:

enter image description here

1 个答案:

答案 0 :(得分:1)

对于此问题,首先,需要确保可以从VM内的映像访问容器。然后,您需要添加规则,以允许NSG中与VM关联的所有TCP端口。最后,您可以使用NSG规则允许的正确端口通过VM公共IP访问VM外部的API服务器。