问题描述
Linux Web App中如何安装系统默认未安装的包,如何来执行如 apt install XXX命令呢?现在遇见的问题时,通过Azure App Service门户中的SSH登录后,执行命令Web端一侧长久没有响应。
根本原因
使用SSH连接到Linux web app的实例,可以参考博文(【应用服务 App Service】解决无法从Azure门户SSH登录问题)中描述的内容:使用 az webapp create-remote-connection 命令打开到应用的远程连接。
当本地网络情况好的情况下,直接在Web SSH上执行apt 等命令也是可以成功的。如下:
但是由于App Service的PaaS特性,实例会随时发生变化,所以如果通过这样的方式安装应用所需要的一些package,并不会持久化,也不会同步到其他实例上。当实例变动时或站点重启,均会丢失通过此方式安装的包(Package),所以建议把应用程序打包为镜像,使用容器化的方式部署到Azure App Service for Container。
解决方案
使用 az webapp config container set
命令指定要为 Web 应用部署的容器注册表和映像:
az webapp config container set --name <app-name> --resource-group AppSvc-DockerTutorial-rg --docker-custom-image-name <registry-name>.azurecr.io/appsvc-tutorial-custom-image:latest --docker-registry-server-url https://<registry-name>.azurecr.io
- 将
<app_name>
替换为 Web 应用的名称,并在两个位置将<registry-name>
替换为注册表的名称。
部署镜像的命令查看Azure官方文档:https://docs.microsoft.com/zh-cn/azure/app-service/tutorial-custom-container?pivots=container-linux#deploy-the-image-and-test-the-app