Azure 应用服务共享托管失败容器启动
Posted
技术标签:
【中文标题】Azure 应用服务共享托管失败容器启动【英文标题】:Azure App Service shared hosting fail container startup 【发布时间】:2021-09-02 21:12:33 【问题描述】:我有一个 Azure 应用服务运行我自己的基于 php 的 docker 映像 (mcr.microsoft.com/appsvc/php:7.4-apache_20201229.1)
部署到服务工作正常,网站按预期运行 (WEBSITES_ENABLE_APP_SERVICE_STORAGE : false
)
我希望能够使用持久存储来保存失败/网络应用重新启动的数据...
我想使用内置的持久存储并设置应用程序设置WEBSITES_ENABLE_APP_SERVICE_STORAGE to true
,像这样使用 docker compose:
version: '3.3'
services:
back:
image: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
volumes:
- $WEBAPP_STORAGE_HOME/site/wwwroot:/var/www/html
ports:
- "8000:80"
restart: always
但是,在更改此设置并停止/启动 Web 应用程序后,容器不再成功启动并且没有给出原因。
我得到的日志如下:
2021-06-17T23:49:43.847Z INFO - Starting container for site
2021-06-17T23:49:43.847Z INFO - docker run -d -p 8081:80 --name XXXXXXXXXXXXXXX -e WEBSITE_CORS_ALLOWED_ORIGINS=XXXXXXXXX -e WEBSITE_CORS_SUPPORT_CREDENTIALS=True -e WEBSITES_ENABLE_APP_SERVICE_STORAGE=true -e WEBSITE_SITE_NAME=XXXXXXXXXXXXXXXXX -e WEBSITE_AUTH_ENABLED=False -e WEBSITE_ROLE_INSTANCE_ID=0 -e WEBSITE_HOSTNAME=XXXXXXXXXXXXXXX -e WEBSITE_INSTANCE_ID=bd0010bcc7f2a648cafc4bcac18f1660692939e3ec29400aeb60d8a3d788c1c3 -e HTTP_LOGGING_ENABLED=1 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
2021-06-17T23:53:34.572Z ERROR - multi-container unit was not started successfully
WEBSITES_ENABLE_APP_SERVICE_STORAGE 对我的容器有什么影响?我对正在运行的 kudu 实例有 bash 访问权限(ssh 也中断了),但我没有从我的应用程序中看到任何文件
是否有任何日志可以让我查看 WEBSITES_ENABLE_APP_SERVICE_STORAGE 设置的失败或我未考虑的任何内容?
谢谢
编辑:
当只放WEBSITES_ENABLE_APP_SERVICE_STORAGE = true
,并在启动命令中添加-v $WEBAPP_STORAGE_HOME/site/wwwroot/storage:/storage
时,wwwroot的内容将被删除,我的docker镜像将被替换为
2021-06-18T08:07:54.534Z INFO - docker run -d -p 2301:80 --name XXXXXXXXXXXXXX_0_f194ab38 -e WEBSITE_CORS_ALLOWED_ORIGINS=https://XXXXXXXXXXX.azurewebsites.net -e WEBSITE_CORS_SUPPORT_CREDENTIALS=True -e WEBSITES_ENABLE_APP_SERVICE_STORAGE=true -e WEBSITE_SITE_NAME=XXXXXXXXXXXX -e WEBSITE_AUTH_ENABLED=False -e PORT=80 -e WEBSITE_ROLE_INSTANCE_ID=0 -e WEBSITE_HOSTNAME=XXXXXXXXXXXXXXXXXXXXXXXXXXX.azurewebsites.net -e WEBSITE_INSTANCE_ID=bd0010bcc7f2a648cafc4bcac18f1660692939e3ec29400aeb60d8a3d788c1c3 -e HTTP_LOGGING_ENABLED=1 **IMAGE** -v $WEBAPP_STORAGE_HOME/site/wwwroot/storage:/storage
2021-06-18T08:07:55.414Z INFO - Starting container for site
2021-06-18T08:07:55.415Z INFO - docker run -d -p 4849:8081 --name XXXXXXXXXXXXXXXXXX_0_f194ab38_middleware -e WEBSITE_CORS_ALLOWED_ORIGINS=https://XXXXXXXXXXXXXX -e WEBSITE_CORS_SUPPORT_CREDENTIALS=True -e WEBSITES_ENABLE_APP_SERVICE_STORAGE=true -e WEBSITE_SITE_NAME=xXXXXXXXXXXX -e WEBSITE_AUTH_ENABLED=False -e WEBSITE_ROLE_INSTANCE_ID=0 -e WEBSITE_HOSTNAME=XXXXXXXXXXXXXX.azurewebsites.net -e WEBSITE_INSTANCE_ID=bd0010bcc7f2a648cafc4bcac18f1660692939e3ec29400aeb60d8a3d788c1c3 -e HTTP_LOGGING_ENABLED=1 appsvc/middleware:1.4.5 /Host.ListenUrl=http://0.0.0.0:8081 /Host.DestinationHostUrl=http://172.16.27.2:80 /Host.UseFileLogging=true
【问题讨论】:
【参考方案1】:应用程序设置 WEBSITES_ENABLE_APP_SERVICE_STORAGE 用于将 Azure 存储中的位置装载到 /home 装载点。
WEBAPP_STORAGE_HOME 是应用服务中的一个环境变量,映射到应用的持久存储。
https://docs.microsoft.com/en-us/archive/blogs/waws/things-you-should-know-web-apps-and-linux#if-your-site-doesnt-start-check-the-docker-logapplies-to-web-app-for-containers.
您还可以利用应用服务内置的“诊断和解决问题”刀片来更好地了解容器崩溃或无法启动的原因。
【讨论】:
以上是关于Azure 应用服务共享托管失败容器启动的主要内容,如果未能解决你的问题,请参考以下文章
从存储容器恢复 Azure Linux webapp 备份失败 PowerShell
Azure 中托管的节点服务器上的 Websocket 失败