Docker 永远不会在 Azure 上运行 - 等待对容器预热请求的响应

Eti*_*ube 10 containers azure docker azure-web-app-service

我正在尝试在 Azure 的应用服务上部署一个 dockerized 应用程序。我正确输入了所有字段,我的图像被拉出,然后我不断收到此错误,直到出现超时。

Waiting for response to warmup request for container -<container name > Elapsed time = 154.673506 sec
Run Code Online (Sandbox Code Playgroud)

我确实设置了 WEBSITE_PORT 8080(由我的应用程序使用)

这是 dockerfile

FROM google/dart

WORKDIR /app
ADD pubspec.* /app/
RUN pub get --no-precompile
ADD . /app/
RUN pub get --offline --no-precompile

WORKDIR /app
EXPOSE 8080

ENTRYPOINT ["pub", "run", "aqueduct:aqueduct", "serve", "--port", "8080"]
Run Code Online (Sandbox Code Playgroud)

它工作正常。我昨晚让它工作了。我想刷新我的图像,所以我重新启动。没有任何效果。几个小时后,我删除了我的应用程序并重新开始......不走运。有任何想法吗?

编辑 1: 尝试将端口更改为 80,但不走运(这是我最初在正常工作时使用的端口)

已解决(部分)* 我将所有内容更改为 8000 端口。我意识到 Linux 和 Windows 不喜欢在 80 上进行非系统监听。因此,我更改了 8000 上的所有内容并在 Azure {WEBSITE_PORT, 8000} 上设置了系统属性。它现在似乎工作正常。我不知道这是否是官方修复...但它会在 30 秒后预热

小智 15

您也可以尝试设置WEBSITES_CONTAINER_START_TIME_LIMIT1800

在此输入图像描述


fre*_*dev 9

应用服务-Docker容器部署

就我而言,这种速度减慢是由自动端口检测引起的。在应用程序设置中设置WEBSITES_PORT解决了该问题。

WEBSITES_PORT=8000
Run Code Online (Sandbox Code Playgroud)

请注意,如果您有更多插槽(生产/登台?),您也必须在其他插槽中设置此环境变量。

来自:Linux 上的 Azure 应用服务常见问题解答 - 自定义容器

我们有自动端口检测。您还可以指定名为 WEBSITES_PORT 的应用程序设置,并为其指定预期端口号的值。此前,该平台使用 PORT 应用程序设置。我们计划弃用此应用程序设置并专门使用 WEBSITES_PORT。


kga*_*lic 7

根据您拥有的应用服务计划,如果有选项 \xe2\x80\x98always on\xe2\x80\x99,请尝试在应用程序配置中将 \xe2\x80\x98always on\xe2\x80\x99 设置为Azure 门户。

\n\n

在此输入图像描述

\n\n

如果您使用的是高级应用程序服务计划,您可以设置预热实例数。尝试将其设置为 2-3,看看它是否会变得更好......这里

\n\n

我和你有同样的经历,但是我的容器非常大,因为它包含ML模型,所以最后我切换到AKS,因为它性能更好..

\n

  • 我参加的是学生计划。这意味着我无权使用这些功能。我很困惑,因为即使所有端口都设置正确,我似乎也无法使其工作。我的 docker 暴露了端口 80。我的应用程序侦听端口 80...为什么他们不互相交谈...我什至没有运行...它只是停留在那里并告诉我它无法预热容器 (2认同)

Aza*_*ael 6

对我来说真正有用的是Ethiene和kgalic上面的答案的组合,在docker文件中将所有端口设置为8000

EXPOSE 8000
CMD gunicorn -w 4 -b :8000 app:app
Run Code Online (Sandbox Code Playgroud)

在天蓝色配置应用程序设置中添加

"WEBSITES_PORT" : "8000" 
Run Code Online (Sandbox Code Playgroud)

在天蓝色配置常规设置中设置

"Always on" : "on"
Run Code Online (Sandbox Code Playgroud)