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

我正在尝试在Azure的App Service上部署dockerized应用。我正确输入所有字段,图像被拉出,直到出现超时,我一直收到此错误。

Waiting for response to warmup request for container -<container name > Elapsed time = 154.673506 sec

我确实设置了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"]

一切正常。我昨晚工作了。我想刷新图像,所以重新启动。没事。几个小时后,我删除了我的应用,然后重新开始了……没运气。有什么想法吗?

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

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

jamesrobin 回答:Docker从不在Azure上运行-等待对容器预热请求的响应

实际上对我有用的是Ethiene和kgalic的上述答案的组合,将docker文件中的所有端口设置为8000

EXPOSE 8000
CMD gunicorn -w 4 -b :8000 app:app

在azure配置应用设置中添加

"WEBSITES_PORT" : "8000" 

在azure配置通用设置设置中

"Always on" : "on"
,

您也可以尝试将WEBSITES_CONTAINER_START_TIME_LIMIT设置为1800

enter image description here

,

应用服务 - Docker 容器部署

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

WEBSITES_PORT=8000

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

来自:Azure App Service on Linux FAQ - Custom Contaniers

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

,

根据您的应用服务计划,如果有一个选项“始终在线”,请尝试在Azure门户的应用程序配置中设置“始终在线”。

enter image description here

如果使用的是Premium App服务计划,则可以设置预热实例数。尝试将其设置为2-3,看看效果是否更好。.here

我和您有相同的经验,但是我的容器很大,因为它包含ML模型,所以最后我改用AKS,因为它的性能更好。.

本文链接:https://www.f2er.com/3154666.html

大家都在问