我正在尝试在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秒钟后预热
答案 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)
答案 2 :(得分:1)
就我而言,这种减速是由自动端口检测引起的。
在应用程序设置中设置 WEBSITES_PORT
解决了问题。
WEBSITES_PORT=8000
请注意,如果您有更多插槽(生产/暂存?),您也必须在其他插槽中设置此 env 变量。
来自:Azure App Service on Linux FAQ - Custom Contaniers
<块引用>我们有自动端口检测。您还可以指定一个名为 WEBSITES_PORT 的应用程序设置,并为其提供预期端口号的值。以前,该平台使用 PORT 应用程序设置。我们计划弃用此应用设置并仅使用 WEBSITES_PORT。
答案 3 :(得分:0)
根据您的应用服务计划,如果有一个选项“始终在线”,请尝试在Azure门户的应用程序配置中设置“始终在线”。
如果使用的是Premium App服务计划,则可以设置预热实例数。尝试将其设置为2-3,看看效果是否更好。.here
我和您有相同的经验,但是我的容器很大,因为它包含ML模型,所以最后我改用AKS,因为它的性能更好。.