【问题标题】:Azure App Service Container keeps on restartingAzure App Service Container 不断重启
【发布时间】:2020-04-26 18:28:31
【问题描述】:

我创建了一个运行 docker 容器的 azure app Service。

但容器似乎一直在重新启动: 2020-01-09 07:21:56.543 信息 - 站点 xxx 的容器 XXX 已成功初始化并准备好为请求提供服务。 2020-01-09 07:22:01.559 错误 - xxx 站点 xxx 的容器不健康,正在停止站点。 2020-01-09 07:22:01.559 信息 - 停止站点 xxx,因为它不健康。

由于它是一个资源密集型应用程序,可能是服务没有快速响应。

我已经尝试添加以下设置:

{ "名称": "CONTAINER_AVAILABILITY_CHECK_MODE", “值”:“关”, “插槽设置”:假 }

但没有效果。

【问题讨论】:

  • 您是否尝试扩大服务计划?
  • 是的,它还在做,我想切换健康检查
  • 你看看图片在本地能不能正常运行?
  • 是的,我检查过了,它运行良好
  • 如何将映像部署到 Azure Web App?您遵循哪些步骤?

标签: azure docker azure-app-service-envrmnt


【解决方案1】:

根据你使用的镜像apache/drill:1.17.0的Dockerfile,它不会暴露8047端口给外部访问。有两种方法可以公开显示here 的端口,然后您可以根据需要访问外部。所以第二种方式适合这种情况,当你将环境变量WEBSITES_PORT设置为8047,就可以在外面访问web app了。这是对我来说效果很好的屏幕截图:

更新:

似乎图像需要交互模式,运行它的 docker 命令应该是docker run -i --name drill-1.17.0 -p 8047:8047 --detach -t apache/drill:1.17.0 /bin/bash 或另一个具有交互模式的类似命令。或者它会在几分钟后停止。但是您无法更改在 Web App 中运行图像的命令,因此您也无法在 Web App 中对图像使用交互模式。

因此解决方案是您需要创建一个自定义图像,以使其基于图像apache/drill:1.17.0 保持运行状态。然后它会很好地工作。

【讨论】:

  • 这里是我使用的设置: [ { "name": "CONTAINER_AVAILABILITY_CHECK_MODE", "value": "Off", "slotSetting": false }, { "name": "DOCKER_REGISTRY_SERVER_URL", " value": "index.docker.io", "slotSetting": false }, { "name": "WEBSITE_HTTPLOGGING_RETENTION_DAYS", "value": "1", "slotSetting": false }, { "name": "WEBSITES_ENABLE_APP_SERVICE_STORAGE", "价值”:“假”,“slotSetting”:假},{“名称”:“WEBSITES_PORT”,“价值”:“8047”,“slotSetting”:假}]
  • @StefanS 在我的回答中查看更新。我认为您使用交互模式测试图像。所以它在本地运行良好。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-07-02
  • 2015-09-17
  • 1970-01-01
  • 1970-01-01
  • 2020-09-10
  • 2020-11-24
  • 2021-07-17
相关资源
最近更新 更多