Подтвердить что ты не робот

Как развертывается Jetty в Azure App Service?

У меня есть веб-приложение Java, которое я запускаю в приложении Azure App Service. Чтобы развернуть его, я использую репозиторий Bitbucket с файлом .war внутри него. Когда я переношу новый .war файл в это репо, он должен автоматически развертываться службой. Однако чаще всего мне приходится либо перезагружать, повторно развертывать, либо даже загружать файл .war через FTP, чтобы развертывание было успешно завершено.

У меня есть один экземпляр Jetty, который находится в этой службе, поэтому мой файл .war имеет имя ROOT.war. AFAIK, при загрузке в службу (будь то через Bitbucket или FTP) этот .war файл должен быть распакован в тот же каталог, который равен /site/wwwroot/webapps. В моем случае этого не происходит. Веб-приложение работает с файлом ROOT.war, сидящим внутри /site/wwwroot/webapps. И каждый раз в то время я получаю папку ROOT в /site/wwwroot/webapps, с двумя файлами по умолчанию index.jsp и background.png. Я не имею ни малейшего представления о том, что вызывает появление папки ROOT с этими файлами по умолчанию. Единственный ключ, который у меня есть, это то, что это произошло пару раз после того, как я изменил переменную среды.

Также после появления папки ROOT с пустыми файлами сервера единственный способ повторного развертывания приложения - это вручную удалить эту папку ROOT через FTP или консоль, предоставленную на портале, и только после этого запрос повторного развертывания выполняется с моим веб-приложением.

Итак, если это недостаточно ясно, мой вопрос заключается в том, что здесь происходит? Я не могу ничего сделать из поведения, с которым я сталкиваюсь. Я чувствую, что я использую эту услугу Azure вслепую и не могу ничего исправить, когда что-то пойдет не так. Есть ли какие-либо ресурсы, которые могут объяснить, что происходит в фоновом режиме при развертывании веб-приложения?

4b9b3361

Ответ 1

Итак, Azure API Apps - это PAAS, а не служба IAAS. Вы можете получить доступ к платформе PaaS, перейдя в yoursite.scm.azurewebsites.net, где вы можете просматривать файловую систему в CMD или Powershell, и вы можете видеть запущенные процессы. Это может показаться, что вы находитесь на одной виртуальной машине, но это не так. Данные, которые вы видите здесь, реплицируются в ваши экземпляры приложения API. Вы можете контролировать, сколько экземпляров вы используете, масштабируя свое приложение API.

Я часто видел вашу проблему при развертывании, затем ROOT был пустым (работая внутри, чтобы увидеть это исправление...). Лучший метод, который работает каждый раз для меня, заключается в том, чтобы остановить ваше приложение API, вручную UNZIP ваш ROOT.war. Переместите файлы в /ROOT/, затем запустите приложение API.

Вы можете просто поместить ROOT.war и позволить системе распаковывать его, когда вы его включаете, но иногда это может привести к тому, что пустой каталог ROOT, а затем требует повторного перезапуска.

Все это заставляет меня перейти на Spring -Boot. Не требуется распаковка. Просто настройте свой web.config и отпустите файл jar.

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