如何通过Docker在Azure应用服务中部署和运行Python Web服务器

y53ybaqx  于 2023-11-17  发布在  Docker
关注(0)|答案(1)|浏览(145)

我正在尝试获取在Azure App Service中运行的Python Web服务器。容器通过Dockerfile创建并推送到Azure Docker Registry。为现有Azure App Service配置了持续部署,以便直接应用更改。此步骤正常工作。除了Web服务器,我已设置SSH以通过Azure门户连接到容器。这也使我可以访问Azure应用服务中的容器。
然而,如果我试图从外部(例如index.html)从容器中运行的Web服务器获取响应,所有请求都会失败。然而,在容器内部,Web服务器正在运行并正确响应(curl localhost:8080
显然,使用的端口(8080)不会转发到容器,因为Web服务器在容器中运行,并且在本地运行时也可以从外部访问。

如何让Python Web服务器在Azure应用服务中运行,以便可以从外部访问它?

什么工作

  • 使用Python Web应用程序创建Docker容器
  • 将容器推送到Azure Docker注册表
  • 持续部署到Azure应用服务
  • 通过Azure Portal与容器的SSH连接
  • 在容器中启动并运行Web服务器
  • 在容器中通过curl重定向web服务器提供的index.html文件
  • 本地启动容器,通过浏览器访问index.html

什么不起作用

  • 从容器外部(即从Internet)访问Web服务器提供的index.html文件

What I have tried

  • 将容器内的端口号更改为8080、80、8008、8000或443(在多种配置中)(Web服务器端口、EXPOSE端口、WEBSITES_PORT设置)
  • 在没有sshd服务的情况下启动web服务器
  • 启用和禁用HTTPS
  • 更改Azure应用服务的“仅HTTPS”、“始终开启”、“HTTP 2.0代理”和“HTTP版本”设置
  • 添加值为8080的应用程序设置PORT
  • 添加值为8080的应用程序设置WEBSITES_PORT
  • 重新启动、重新创建和重新部署Azure应用服务
  • 检查Azure门户中的日志流
  • 在Azure门户中检查部署中心日志

我在研究过程中遇到的资源和建议的解决方案

观察结果

容器启动过程失败,因为它不响应HTTP ping。

ERROR - Container <name> for site <name> did not start within expected time limit. Elapsed time = 230.2830234 sec
ERROR - Container <name> didnt respond to HTTP pings on port: 8080, failing site start. See container logs for debugging.
INFO - Stopping site <name> because it failed during startup.

字符串
在容器中,所有服务都在工作
Azure使用此命令启动Web服务中的容器

docker run -d --expose=8080 --name <name> -e WEBSITES_ENABLE_APP_SERVICE_STORAGE=false
-e WEBSITES_PORT=8080 -e WEBSITE_SITE_NAME=<app-service-name> -e WEBSITE_AUTH_ENABLED=False
-e WEBSITE_ROLE_INSTANCE_ID=0 -e WEBSITE_HOSTNAME=<hostname> -e WEBSITE_INSTANCE_ID=<id>
-e WEBSITE_USE_DIAGNOSTIC_SERVER=False <DockerRegistry:Tag>


在本地使用这个命令运行容器会导致相同的结果(index.html不可达)。但是,如果我将-p 8080:8080添加到命令中,它将工作。

The files i used

rhfm7lfc

rhfm7lfc1#

我在我的环境中复制了相同的cloning your code

当地答复:


的数据

  • 最初,在部署到Azure App Service后,我也遇到了运行应用程序的问题,并得到了**“应用程序错误”**。


**注意:**成功将应用程序部署到Azure App Service后,您必须运行启动命令才能访问和运行已部署的应用程序,而不会出现任何问题。

  • Azure App Service=> Settings=>Configuration=> General Settings中导航到您的Web应用,然后输入**启动命令 *python3 -m http.server**和保存。


门户响应:

  • 浏览Web应用程序URL https://<app_name>.azurewebsites.net


相关问题