Azure App Service容器不断重启

问题描述 投票:1回答:2

我创建了一个运行docker容器的azure应用服务。

但是容器似乎一直在重新启动: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”,“ value”:“ Off”,“ slotSetting”:否}

但无效。

azure docker azure-app-service-envrmnt
2个回答
0
投票

是,我做了第一件事,访问它不是问题。

在1分钟后,它由于不正常而正在重新启动:

2020-01-09 07:25:46.975信息-发起对容器Drillap_0_45d0e5be的预热请求以进行站点Drillap2020-01-09 07:26:02.184信息-等待对容器drillap_0_45d0e5be的预热请求的响应。经过的时间= 15.2089367秒2020-01-09 07:26:16.502信息-站点rillap的容器drillap_0_45d0e5be已成功初始化,并准备服务请求。2020-01-09 07:26:21.523错误-Drillap_0_45d0e5be网站Drillap的容器不健康,正在停止网站。2020-01-09 07:26:21.524信息-停止站点钻探,因为它不健康。2020-01-09 07:36:30.680信息-从Docker集线器中提取图像:apache / drill:1.17.02020-01-09 07:36:31.576 INFO-1.17.0从Apache / Drill中提取2020-01-09 07:36:31.577信息-摘要:sha256:0bd358f1c523787f4d8f6e69d1119e10effceb0cf84135dbeb23184244cb361b2020-01-09 07:36:31.578信息-状态:图像对于apache / drill是最新的:1.17.02020-01-09 07:36:31.581信息-拉图像成功,花费时间:0分钟和0秒2020-01-09 07:36:31.589 INFO-网站的启动容器2020-01-09 07:36:31.590 INFO-docker run -d -p 5004:8047 --name drillap_0_6ea940a5 -e WEBSITES_ENABLE_APP_SERVICE_STORAGE = false -e WEBSITES_PORT = 8047 -e WEBSITE_SITE_NAME = Drillap -e WEBSITE_AUTH_IDABLE == -e WEBSITE_HOSTNAME = drillap.azurewebsites.net -e WEBSITE_INSTANCE_ID = c800a32d152e76d00855faaa38f7220f16f7397d5f2a -e HTTP_LOGGING_ENABLED = 1 apache / drill:1.17.0 -i --detach -t apache / drill:1.17.0 / bin

2020-01-09 07:36:32.577信息-向站点rillap的容器drillap_0_6ea940a5发起预热请求2020-01-09 07:36:47.871信息-等待对容器rillap_0_6ea940a5的预热请求的响应。经过的时间= 15.2939741秒2020-01-09 07:37:00.080信息-站点rillap的容器drillap_0_6ea940a5已成功初始化,并准备服务请求。2020-01-09 07:37:05.107错误-Drillap_0_6ea940a5网站Drillap的容器不健康,正在停止网站。2020-01-09 07:37:05.108信息-停止站点钻探,因为它不健康。2020-01-09 07:37:06.037信息-从Docker集线器中提取图像:apache / drill:1.17.02020-01-09 07:37:06.922信息-1.17.0从Apache / Drill中提取2020-01-09 07:37:06.923信息-摘要:sha256:0bd358f1c523787f4d8f6e69d1119e10effceb0cf84135dbeb23184244cb361b2020-01-09 07:37:06.924信息-状态:图像对于apache / drill是最新的:1.17.02020-01-09 07:37:06.928信息-成功提取图像,耗时:0分钟和0秒2020-01-09 07:37:06.936信息-网站的启动容器2020-01-09 07:37:06.938 INFO-docker run -d -p 5974:8047 --name drillap_0_e803f215 -e WEBSITES_ENABLE_APP_SERVICE_STORAGE = false -e WEBSITES_PORT = 8047 -e WEBSITE_SITE_NAME = Drillap -e WEBSITE_AUTH_ENABLED = False -e WEBSITE_HOSTNAME = drillap.azurewebsites.net -e WEBSITE_INSTANCE_ID = cbb157800a32d152e76d00855faaa38f7220f16f7397d5f2a -e HTTP_LOGGING_ENABLED = 1 apache / drill:1.17.0 -i --detach -t apache / bin>:

2020-01-09 07:37:07.885信息-发起对容器Drillap_0_e803f215的站点Drillap的预热请求2020-01-09 07:37:23.172信息-等待对容器rillap_0_e803f215的预热请求的响应。经过的时间= 15.2871888秒2020-01-09 07:37:36.427信息-站点rillap的容器drillap_0_e803f215已成功初始化,并准备服务请求。2020-01-09 07:37:41.439错误-Drillap_0_e803f215网站Drillap的容器不健康,正在停止网站。2020-01-09 07:37:41.440信息-停止站点钻探,因为它不健康。2020-01-09 07:37:42.060信息-从Docker集线器中提取图像:apache / drill:1.17.02020-01-09 07:37:42.935信息-1.17.0从Apache / Drill中提取2020-01-09 07:37:42.936信息-摘要:sha256:0bd358f1c523787f4d8f6e69d1119e10effceb0cf84135dbeb23184244cb361b2020-01-09 07:37:42.937信息-状态:图像对于apache / drill是最新的:1.17.02020-01-09 07:37:42.940信息-拉图像成功,花费时间:0分钟和0秒2020-01-09 07:37:42.946信息-网站的启动容器2020-01-09 07:37:42.948 INFO-docker run -d -p 8923:8047 --name drillap_0_1a0fd801 -e WEBSITES_ENABLE_APP_SERVICE_STORAGE = false -e WEBSITES_PORT = 8047 -e WEBSITE_SITE_NAME = Drillap -e WEBSITE_AUTH_IDABLE == -e WEBSITE_HOSTNAME = drillap.azurewebsites.net -e WEBSITE_INSTANCE_ID = cbb516cc2157800a32d152e76d00855faaa38f7220f16f7397d5f2a -e HTTP_LOGGING_ENABLED = 1 apache / drill:1.17.0 -i --detach -t apache /

2020-01-09 07:37:43.927信息-初始化对容器rillap_0_1a0fd801的站点drillap的预热请求2020-01-09 07:37:59.180信息-等待对容器rillap_0_1a0fd801的热身请求的响应。经过的时间= 15.2529388秒2020-01-09 07:38:12.606信息-站点rillap的容器drillap_0_1a0fd801已成功初始化,并准备服务请求。2020-01-09 07:38:17.615错误-Drillap_0_1a0fd801网站Drillap的容器不健康,正在停止网站。2020-01-09 07:38:17.616信息-因为不健康,正在停止网站钻探。

根据您所使用的映像apache / drill:1.17.0的Dockerfile,它不会将端口8047暴露给外部。公开显示here的端口有两种方法,然后可以根据需要访问外部。因此,第二种方法适用于这种情况,当您将环境变量WEBSITES_PORT设置为值8047时,便可以在外部访问Web应用程序。这是对我来说效果很好的屏幕截图:

enter image description here

更新:

[似乎图像需要交互模式,并且运行它的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保持运行状态。这样就可以了。


0
投票

根据您所使用的映像apache / drill:1.17.0的Dockerfile,它不会将端口8047暴露给外部。公开显示here的端口有两种方法,然后可以根据需要访问外部。因此,第二种方法适用于这种情况,当您将环境变量WEBSITES_PORT设置为值8047时,便可以在外部访问Web应用程序。这是对我来说效果很好的屏幕截图:

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.