Развертывание Spring Boot app.jar в Azure с использованием FTP не работает - PullRequest
0 голосов
/ 25 января 2019

Я пытаюсь развернуть приложение Spring Boot для локальной сборки в службе приложений Azure. Примечание. Я новичок в использовании Azure.

Служба приложений, созданная с помощью портала Azure, имеет следующие характеристики:

  • Stack: Java SE (JRE 8)

Это должно сделать возможным запуск приложения как jar.

Я также добавил следующие настройки приложения (env vars):

  • JAVA_OPTS: -Dserver.port=80
  • SPRING_PROFILES_ACTIVE: prod

Это должно установить правильный порт сервера, предполагая, что порт 80 является правильным, который я должен использовать. Я читал это другие посты. Второй параметр приложения обеспечит использование профиля prod внутри приложения.

Я подключился к службе приложений через FTP, удалил default.jar, загрузил свой собственный app.jar, а затем перезапустил службу приложений.

Я получаю уведомление, что приложение было перезапущено, но оно не работает. Я не могу получить доступ к приложению, но я также не могу найти файлы журналов. Попытка потока журнала на портале Azure дает только информацию о Starting container for site и журналах, связанных с докером, но не о журналах моего приложения.

Интересно, куда мне обратиться дальше для устранения неполадок.

Обратите внимание, я использую опцию развертывания FTP, так как мое приложение создается с использованием Gradle, а Azure, похоже, имеет только плагин Maven для развертывания приложений.

UPDATE

Я добавил web.config, используя FTP, содержащий:

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <system.webServer>
        <handlers>
            <add name="httpPlatformHandler" path="*" verb="*" modules="httpPlatformHandler" resourceType="Unspecified" />
        </handlers>
        <httpPlatform processPath="%JAVA_HOME%\bin\java.exe"
            arguments="-Djava.net.preferIPv4Stack=true -Dserver.port=%HTTP_PLATFORM_PORT% -jar &quot;%HOME%\site\wwwroot\app.jar&quot;">
        </httpPlatform>
    </system.webServer>
</configuration>

Я перезапустил Службу приложений, но все равно. Я также не получаю ошибок (или, по крайней мере, я не знаю, где искать).

ОБНОВЛЕНИЕ 2

С помощью «Диагностика и решение проблем» в портале de Azure я смог просматривать журналы приложений.

Они показывают, что приложение успешно запущено, но затем выдает:

2019-01-25T12:53:31.730996889Z #
2019-01-25T12:53:31.731125589Z # A fatal error has been detected by the Java Runtime Environment:
2019-01-25T12:53:31.731207089Z #
2019-01-25T12:53:31.737259893Z #  SIGSEGV (0xb) at pc=0x000000000000b32e, pid=197, tid=0x00007fab3d393ae8
2019-01-25T12:53:31.740444095Z #
2019-01-25T12:53:31.740455395Z # JRE version: OpenJDK Runtime Environment (8.0_192-b01) (build 1.8.0_192-b01)
2019-01-25T12:53:31.740459895Z # Java VM: OpenJDK 64-Bit Server VM (25.192-b01 mixed mode linux-amd64 compressed oops)
2019-01-25T12:53:31.740463995Z # Problematic frame:
2019-01-25T12:53:31.740467795Z # C  0x000000000000b32e
2019-01-25T12:53:31.740471495Z #
2019-01-25T12:53:31.740475195Z # Core dump written. Default location: //core or core.197
2019-01-25T12:53:31.740479095Z #
2019-01-25T12:53:31.770424313Z # An error report file with more information is saved as:
2019-01-25T12:53:31.778837718Z # //hs_err_pid197.log
2019-01-25T12:53:31.827292848Z #
2019-01-25T12:53:31.827404948Z # If you would like to submit a bug report, please visit:
2019-01-25T12:53:31.827534548Z #   http://www.azulsystems.com/support/
2019-01-25T12:53:31.827635448Z #
2019-01-25T12:53:32.357760775Z /bin/init_container.sh: line 123:   197 Segmentation fault      (core dumped) java $JAVA_OPTS -jar "$JAR_PATH"
Docker logs from instance: RD0003FF30DE7C

Обратите внимание, что одни и те же приложения успешно работают на Heroku в течение нескольких месяцев.

Ответы [ 2 ]

0 голосов
/ 30 января 2019

Служба приложений поддерживает запуск Java в Windows и Linux. Артефакт Web.config работает только при работе в Windows и в вашем случае, поскольку вы используете App Service Linux, этот артефакт вообще не будет использоваться.

У нас также есть некоторые параметры, которые можно настроить, такие как WEBSITES_CONTAINER_START_TIME_LIMIT, но есть и другие, такие как WEBSITES_PORT, для настройки порта, который будет использовать ваш контейнер. Пожалуйста, просмотрите FAQ: https://docs.microsoft.com/en-us/azure/app-service/containers/app-service-linux-faq

Также, пожалуйста, ознакомьтесь с руководством Java-разработчика для Службы приложений: https://docs.microsoft.com/en-us/azure/app-service/containers/app-service-linux-java

Спасибо

Хоакин

0 голосов
/ 28 января 2019

Было несколько вещей, происходящих.После добавления упомянутого web.config приложение развертывалось.

* * * * * * * * * * * * * * * A fatal error has been detected by the Java Runtime Environment * * * * * *1003* * * * * * * * * * * *1003* * * * * * * * * * * *

* *1005*приложение все еще не работало, и на основании логов я обнаружил, что приложение не запускалось в 230s.После обновления настройки приложения WEBSITES_CONTAINER_START_TIME_LIMIT до 1800 все заработало.

Почему приложение так долго запускается, я не знаю.Глядя на бревна, нет большого времени, проведенного в какой-то области;это просто постепенно медленно.Приложения запускаются локально в 8s и на Heroku в 20s.

...