如何在Azure App Service上部署Jetty?

hal*_*lei 17 java deployment jetty azure azure-api-apps

我有一个我在Azure App Service实例上运行的Java Web应用程序.为了部署它,我使用了一个带有.war文件的Bitbucket repo.当我向该repo提交一个新的.war文件时,它应该由该服务自动部署.但是,通常情况下,我必须通过FTP重新启动,重新部署甚至上传.war文件,才能成功完成部署.

我有一个驻留在此服务中的Jetty实例,因此我的.war文件被命名ROOT.war.AFAIK,当上传到服务(无论是通过Bitbucket还是FTP)时,这个.war文件应该被解压缩到同一目录中,即/site/wwwroot/webapps.就我而言,这不会发生.Web应用程序可以独立使用ROOT.war文件/site/wwwroot/webapps.每隔一段时间,我会得到一个ROOT文件夹/site/wwwroot/webapps,有两个默认文件index.jspbackground.png.我没有任何想法导致ROOT文件夹与这些默认文件一起出现的原因.我唯一的线索是,在我更改环境变量后,它发生了几次.

此外,ROOT文件夹显示空服务器文件后,我可以重新部署应用程序的唯一方法是ROOT通过FTP或门户网站中提供的控制台手动删除此文件夹,然后我的重新部署请求成功使用我的Web应用程序.

那么,如果不够清楚,我的问题是这里发生了什么?我无法从我面临的行为中做出任何改变.我觉得我盲目地使用这个Azure服务,并且当出现问题时无法解决任何问题.是否有任何资源可以解释部署Web应用程序时后台发生的情况?

Dan*_*SFT 1

因此,Azure API 应用程序是 PAAS,而不是 IAAS 服务。您可以通过进入 来访问PaaS平台yoursite.scm.azurewebsites.net,您可以在CMD或Powershell中浏览文件系统,并可以看到正在运行的进程。这可能会让您感觉像是在单个虚拟机上,但事实并非如此。您在此处看到的数据将复制到您的 API 应用程序实例中。您可以通过扩展 API 应用程序来控制拥有的实例数量。

我经常看到您的部署问题,然后 ROOT 为空(内部工作以查看此修复...)。对我来说每次都有效的最好方法是停止你的 API 应用程序,手动解压你的 ROOT.war。将文件移至 /ROOT/,然后启动您的 API 应用程序。

您可以简单地放置 ROOT.war,并在重新打开系统时让系统解压它,但这有时会导致 ROOT 目录为空,然后需要再次重新启动。

所有这些让我转向 Spring-Boot。无需拆包。只需配置您的 web.config 并删除 jar 文件。

https://learn.microsoft.com/en-us/azure/app-service-web/web-sites-java-custom-upload#springboot