Docker контейнер не отвечает на azure веб-приложение - PullRequest
0 голосов
/ 03 марта 2020

Я пытаюсь развернуть и запустить приложение весенней загрузки в веб-приложении azure linux с использованием конвейера azure devops. Контейнер развертывается в веб-приложении, однако после запуска он не отвечает на проверки работоспособности. При развертывании пакет jar для сборки y-файла az-pipe с использованием Maven затем создает образ и передает его в ACR. Webhook развертывает последнее изображение в веб-приложении.

Ошибки

 - docker run -d -p 8440:8000 --name myapp-backend-dev_0_2b7b9f65 -e
   WEBSITE_CORS_ALLOWED_ORIGINS=* -e
   WEBSITE_CORS_SUPPORT_CREDENTIALS=False -e
   WEBSITES_ENABLE_APP_SERVICE_STORAGE=false -e WEBSITES_PORT=8000 -e
   WEBSITE_SITE_NAME=myapp-backend-dev -e WEBSITE_AUTH_ENABLED=False -e
   WEBSITE_ROLE_INSTANCE_ID=0 -e
   WEBSITE_HOSTNAME=myapp-backend-dev.azurewebsites.net -e
   WEBSITE_INSTANCE_ID=0d7eaa93ccf04e2494816f0f168f4e2170cd80b95a36687e39877b27289
   -e HTTP_LOGGING_ENABLED=1 myappdevacr.azurecr.io/dev:latest
   2. Starting container for site
   3. docker run -d -p 9268:8081 --name myapp-backend-dev_0_2b7b9f65_middleware -e
   WEBSITE_CORS_ALLOWED_ORIGINS=* -e
   WEBSITE_CORS_SUPPORT_CREDENTIALS=False -e
   WEBSITES_ENABLE_APP_SERVICE_STORAGE=false -e WEBSITES_PORT=8000 -e
   WEBSITE_SITE_NAME=myapp-backend-dev -e WEBSITE_AUTH_ENABLED=False -e
   WEBSITE_ROLE_INSTANCE_ID=0 -e
   WEBSITE_HOSTNAME=myapp-backend-dev.azurewebsites.net -e
   WEBSITE_INSTANCE_ID=0d7eaa93ccf04e2494816f0f168f4e2170cd80b95a36687e39877b27289
   -e HTTP_LOGGING_ENABLED=1 appsvc/middleware:1907112318 /Host.ListenUrl=http://0.0.0.0:8081
   /Host.DestinationHostUrl=http://172.16.1.2:8000
   /Host.UseFileLogging=true
   4. Container myapp_0_de5443dd didn't respond to HTTP pings on port: 8000, failing site start. See container logs for debugging.
   5. home/LogFiles/webssh/pm2.log (https://myapp.scm.azurewebsites.net/api/vfs/LogFiles/webssh/pm2.log)Host:
   undefinedwebssh2 Login: user=root from=127.0.0.1 host=undefined
   port=2222 sessionID=undefined allowreplay=undefinedHeaders:
   {"connection":"close","accept":"text/html, application/xhtml+xml,
   application/xml; q=0.9, /;
   q=0.8","accept-encoding":"br, gzip,
   deflate","accept-language":"en-gb","cookie":"ARRAffinity=0d7eaa93ccf04e2494816f0f168f4e2170cd80b95a36687e39877b2728981272","host":"127.0.0.1:3000","max-forwards":"10","referer":"https://myapp.scm.azurewebsites.net/","user-agent":"Mozilla/5.0
   (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/605.1.15 (KHTML, like
   Gecko) Version/12.1.2
   Safari/605.1.15","x-client-ip":"111.11.111.111","x-client-port":"57208","x-waws-unencoded-url":"/webssh/host","client-ip":"111.11.111.111:57208","x-arr-log-id":"SOMETHING-ee62-48cf-813a-724c9acb0ca0","disguised-host":"myapp.scm.azurewebsites.net","x-site-deployment-id":"myapp","was-default-hostname":"myapp.scm.azurewebsites.net","x-original-url":"/webssh/host","x-ms-client-principal-name":"EMAIL@SOMETHING.onmicrosoft.com","x-ms-client-display-name":"SOME
   NAME","x-forwarded-for":"111.11.111.111:57208","x-arr-ssl":"2048|256|C=US, S=Washington, L=Redmond, O=Microsoft Corporation, OU=Microsoft IT,
   CN=Microsoft IT TLS CA
   5|CN=*.azurewebsites.net","x-forwarded-proto":"https","x-appservice-proto":"https"}Host
   from file: 172.16.1.2DEBUG: Local ident:
   'SSH-2.0-ssh2js0.1.16'on.error - Error: connect ECONNREFUSED
   172.16.1.2:2222Status_WatchFile :: Error Error: ENOENT: no such file or directory, open '/appsvctmp/status.txt'

Dockerfile

FROM adoptopenjdk/openjdk11:ubi

ARG PROFILE
ENV spring.profiles.active=$PROFILE

ENV ACCEPT_EULA=Y ENV WEBSITES_PORT=8000 ENV WEBSITE_HTTPLOGGING_RETENTION_DAYS=7 ENV WEBSITES_CONTAINER_START_TIME_LIMIT=1800

ARG JAR_FILE=target/*.jar COPY ${JAR_FILE} app.jar

EXPOSE 8000 8000
ENTRYPOINT ["java","-jar","/app.jar"]

ПРИМЕЧАНИЕ : Пробное решение, предоставленное Charles Xu и beerzy на этом сообщении , но ошибка не устранилась.

Ответы [ 2 ]

1 голос
/ 04 марта 2020

Я могу предположить, исходя из предоставленной информации, что docker команды неверны в отношении сети.

Сначала создайте docker сеть, используя

docker network create your_network_name

Затем подключите оба приложения к одной сети, используя

- сеть your_network_name

Нет необходимости открывать какие-либо порты снаружи, если не нужно внешне, также, как только приложения запущены, используйте следующую команду, чтобы проверить, появляются ли оба в сети, которую вы создали

docker network your_network_name inspect

Если вы не могу понять, что я сейчас говорю, дайте мне знать, я обновлю ответ соответственно.

0 голосов
/ 05 марта 2020

Похоже, вы пытаетесь развернуть приложение Java 11 как веб-приложение Linux в Azure Служба приложений. Для этого вы можете напрямую развернуть свой jar-файл в веб-приложении, не создавая образ Docker. Это также избавит вас от дополнительной работы по поддержке ACR и настройке веб-хуков.

Существуют различные способы развертывания приложения в веб-приложении. Поскольку вы уже используете Maven в своем конвейере, вам будет проще всего использовать плагин azure -webapp-maven для развертывания приложения в Azure Служба приложений. Проверьте эту статью для деталей: https://docs.microsoft.com/en-us/azure/java/spring-framework/deploy-spring-boot-java-app-with-maven-plugin. В примере в этой статье используется Java 8. Чтобы использовать Java 11, измените javaVersion и webContainer на java11 вместо jre8. Служба приложений автоматически позаботится о настройке соответствующей переменной среды SERVER_PORT за кулисами, чтобы при запуске приложения Spring Boot оно начало слушать правильный порт (как и было в исходном вопросе).

Вы можете определить Java свойства, используя JAVA_OPTS в теге <appSettings> в pom. xml. Обратитесь к статье выше для примера. Просто убедитесь, что вы не установили для свойства server.port значение 80, как указано в примере (мы скоро исправим пример).

...