Azure容器实例在部署后未通过url显示任何内容

Azure容器实例在部署后未通过url显示任何内容,azure,docker,azure-cli,azure-container-instances,Azure,Docker,Azure Cli,Azure Container Instances,我正在尝试在azure上部署docker映像。我能够成功创建docker映像,也能够成功部署。但在我为创建容器部署而指定的URL上,我看不到任何内容。我的应用程序是一个python flask应用程序,它也使用dash 我跟着。示例应用程序运行良好。但我的应用程序没有。我不知道如何调试,也不知道哪里出了问题 Dockerfile commands.sh Azure命令 sudo az acr login --name mynameregistry sudo az acr show --name

我正在尝试在azure上部署docker映像。我能够成功创建docker映像,也能够成功部署。但在我为创建容器部署而指定的URL上,我看不到任何内容。我的应用程序是一个python flask应用程序,它也使用dash

我跟着。示例应用程序运行良好。但我的应用程序没有。我不知道如何调试,也不知道哪里出了问题

Dockerfile

commands.sh

Azure命令

sudo az acr login --name mynameregistry

sudo az acr show --name mynameregistry--query loginServer --output table

sudo docker tag spo_third_trial:v1 mynameregistry.azurecr.io/spo_third_trial:v1

sudo docker push mynameregistry.azurecr.io/spo_third_trial:v1

sudo az acr repository list --name mynameregistry--output table

sudo az acr repository show-tags --name mynameregistry--repository spo_third_trial --output table

sudo az acr show --name mynameregistry--query loginServer

sudo az container create --resource-group myResourceGroup --name spo-third-trial --image mynameregistry.azurecr.io/spo_third_trial:v1 --cpu 1 --memory 1 --registry-login-server mynameregistry.azurecr.io --registry-username mynameregistry --registry-password randomPassword --dns-name-label spo-third-trial --ports 80 8050
但是当我去http://spo-third-trial.eastus.azurecontainer.io 我明白了

无法访问此站点spo-third-trial.eastus.azurecontainer.io花了太长时间才响应。 谷歌搜索spo第三次试用eastus azure容器io 错误\u连接\u超时\u

当我使用这个命令sudo az container logs-resource group-myResourceGroup-name spo third-trial访问日志时,我得到了这个消息

Running on http://127.0.0.1:8050/
Debugger PIN: 950-132-306
 * Serving Flask app "server" (lazy loading)
 * Environment: production
   WARNING: This is a development server. Do not use it in a production deployment.
   Use a production WSGI server instead.
 * Debug mode: on
Running on http://127.0.0.1:8050/
Debugger PIN: 871-957-278
我的卷曲输出

 curl -v http://spo-third-trial.eastus.azurecontainer.io

* Rebuilt URL to: http://spo-third-trial.eastus.azurecontainer.io/
*   Trying <ip-address>...
* TCP_NODELAY set
* connect to <ip-address> port 80 failed: Connection timed out
* Failed to connect to spo-third-trial.eastus.azurecontainer.io port 80: Connection timed out
* Closing connection 0
curl: (7) Failed to connect to spo-third-trial.eastus.azurecontainer.io port 80: Connection timed out
我不明白创建docker、azure或两者是否都有问题。如果我能得到任何帮助,我将不胜感激


注意:我正在使用一个虚拟PC-AWS客户端,以访问客户端内部的azure。

如前所述,您的问题有两点:

我想您的意思是将内部端口8050映射到外部端口80。但在Azure容器实例中,这在当前2019年8月是不可能的。此上有一个未解决的项目-端口8050意味着,不是将一个映射到另一个。 我们发现,实际的问题是python flask应用程序只在127.0.0.1上侦听,而不是在0.0.0.0上侦听。所以它不接受外界的要求。
我想您需要将内部端口8050映射到外部端口80。这是不可能的,至少不是您指定的方式-端口8050意味着公开两个端口,而不是将一个端口映射到另一个端口。您是否已尝试从上的浏览器调用您的应用程序?这实际上可能在这里起作用:映射端口目前不可能,但计划是这样的:@静默映射端口是可能的,对吗?我是这么说的。我检查了jsonyml?部署后的输出,它显示端口:[{port:80,protocol:TCP},{port:8050,protocol:TCP}],@silent I也使用…:8050访问。它给出了相同的错误。感谢您的支持和讨论。我没有人可以和我一起集思广益。还有一个问题。为什么不让app.run\u serverdebug=True,host='0.0.0',port='80'?这对只映射端口80不起作用吗?您一定可以尝试。是的,如果允许用户使用端口,它应该在端口80上运行。通常会出现权限问题。但是试一试,我被拒绝了。我想我可以尝试操纵一些权限和服务。但这是推荐的吗?比如,在80上运行一些东西可以吗?或者在其他港口运行是更好的做法?这是一个不同的主题,我相信有很多材料围绕着它;
Running on http://127.0.0.1:8050/
Debugger PIN: 950-132-306
 * Serving Flask app "server" (lazy loading)
 * Environment: production
   WARNING: This is a development server. Do not use it in a production deployment.
   Use a production WSGI server instead.
 * Debug mode: on
Running on http://127.0.0.1:8050/
Debugger PIN: 871-957-278
 curl -v http://spo-third-trial.eastus.azurecontainer.io

* Rebuilt URL to: http://spo-third-trial.eastus.azurecontainer.io/
*   Trying <ip-address>...
* TCP_NODELAY set
* connect to <ip-address> port 80 failed: Connection timed out
* Failed to connect to spo-third-trial.eastus.azurecontainer.io port 80: Connection timed out
* Closing connection 0
curl: (7) Failed to connect to spo-third-trial.eastus.azurecontainer.io port 80: Connection timed out