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

时间:2019-11-06 06:04:57

标签: azure docker containers azure-web-sites

我正在尝试在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秒钟后预热

4 个答案:

答案 0 :(得分:2)

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

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

在azure配置应用设置中添加

"WEBSITES_PORT" : "8000" 

在azure配置通用设置设置中

"Always on" : "on"

答案 1 :(得分:1)

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

enter image description here

答案 2 :(得分:1)

应用服务 - Docker 容器部署

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

WEBSITES_PORT=8000

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

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

<块引用>

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

答案 3 :(得分:0)

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

enter image description here

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

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