当前位置: 首页 > 知识库问答 >
问题:

容器的Azure Web应用-启动期间失败-没有响应HTTP ping

彭令秋
2023-03-14

我遇到了一个恼人的问题,我的容器化应用程序在本地运行良好,但部署到Azure时失败,尽管端口已正确公开。

  • Azure web应用程序,用于基本B1机器上的Linux操作系统的容器。
  • nodejs v12 LTS,快速服务器监听HTTPS端口443。包含一个HTTP 404(未找到)错误处理程序。
  • M0沙盒(免费层)上的数据库db Mongodb Atlas。本地和Azure IP白名单。
  • docker容器使用Dockerfile. no库伯内特斯,no yml配置文件
  • Docker镜像托管在私有Docker Hub回购中,由Azure在构建时拉取

>

  • 没有docker:节点应用程序。js通过https://localhost:443

    使用docker:docker构建-t myapp:latestthendocker run-p 49160:443-d myapp:latest通过https://localhost:49160

    在这两种情况下,我都从我的nodejs应用程序中获得了预期的输出:

    Running in production on x64
    Express HTTPS server listening on port 443
    mongo :: connected to database mydb at mydb-tot7b.azure.mongodb.net
    

    (显然,myapp和mydb不是实际名称。此处使用是为了方便。)

    配置不足-

    PORT=443
    WEBSITES_PORT=443
    DOCKER_ENABLE_CI=true
    

    管道设置拉取docker镜像myrepo/myapp:private docker Hub repo on build的最新版本。正确地提取图像。失败通过https://myapp.azurewebsites.net/错误为503,服务暂时不可用。

    Azure日志:

    2020-04-10 18:02:21.040 INFO  - Pulling image: myrepo/myapp:latest
    2020-04-10 18:02:22.128 INFO  - latest Pulling from myrepo/myapp
    2020-04-10 18:02:22.129 INFO  -  Digest: sha256:982[...]
    2020-04-10 18:02:22.129 INFO  -  Status: Image is up to date for myrepo/myapp:latest
    2020-04-10 18:02:22.131 INFO  - Pull Image successful, Time taken: 0 Minutes and 1 Seconds
    2020-04-10 18:02:22.143 INFO  - Starting container for site
    2020-04-10 18:02:22.144 INFO  - docker run -d -p 7909:443 --name myapp_0_138f197c -e PORT=80 -e WEBSITES_ENABLE_APP_SERVICE_STORAGE=false -e WEBSITES_PORT=443 -e WEBSITE_SITE_NAME=myapp -e WEBSITE_AUTH_ENABLED=False -e WEBSITE_ROLE_INSTANCE_ID=0 -e WEBSITE_HOSTNAME=myapp.azurewebsites.net -e WEBSITE_INSTANCE_ID=6fc3[...] myrepo/myapp:latest
    2020-04-10 18:02:22.144 INFO  - Logging is not enabled for this container.Please use https://aka.ms/linux-diagnostics to enable logging to see container logs here.
    2020-04-10 18:02:23.473 INFO  - Initiating warmup request to container myapp_0_138f197c for site myapp
    2020-04-10 18:02:45.304 INFO  - Waiting for response to warmup request for container myapp_0_138f197c. Elapsed time = 21.8308149 sec
    [...]
    2020-04-10 18:06:08.252 INFO  - Waiting for response to warmup request for container myapp_0_138f197c. Elapsed time = 224.7791547 sec
    2020-04-10T18:02:24.893958779Z Running in production on x64
    2020-04-10T18:02:26.275376640Z Express HTTPS server listening on port 80
    2020-04-10T18:02:26.601261213Z mongo :: connected to database mydb at mydb-tot7b.azure.mongodb.net
    2020-04-10 18:06:14.346 ERROR - Container myapp_0_138f197c for site myapp did not start within expected time limit. Elapsed time = 230.8732099 sec
    2020-04-10 18:06:14.365 ERROR - Container myapp_0_138f197c didn't respond to HTTP pings on port: 443, failing site start. See container logs for debugging.
    2020-04-10 18:06:14.427 INFO  - Stoping site myapp because it failed during startup.
    

    为什么容器化应用程序似乎启动正确(如azure日志中所示),但容器无法响应443上的HTTP ping,这在dockerfile和azure中都是公开的,并带有端口和端口
    我需要让我的HTTPS服务器显式响应HTTP PING吗?如果需要,我该怎么做?

    Dockerfile:

    FROM node:12
    
    WORKDIR /usr/src/myapp
    
    COPY package*.json ./
    
    ARG NODE_ENV=production
    ENV NODE_ENV=${NODE_ENV}
    
    RUN npm install
    
    COPY . .
    
    EXPOSE 443
    CMD [ "node", "app.js" ]
    

    这个问题可能被认为是重复的,但与下面的大多数问题相比,我提供了更多的相关信息。此外,我花了大量时间进行故障排除,但这些相关资源似乎都没有帮助:

    • Docker从未在Azure上运行-等待对容器预热请求的响应

  • 共有2个答案

    蒋寒
    2023-03-14

    我自己的应用程序一直在做应用程序。在启动中使用HttpSreDirection()配置。这就是我犯这个错误的原因。我一停止那样做,问题就消失了。

    穆理
    2023-03-14

    在应用服务级别强制执行HTTPS时,将发生TLS终止,流量将路由到容器端口,因此无需从容器强制执行TLS。

    如果您的容器侦听另一个端口(例如:8081),只需将端口应用程序设置设置为该端口号。应用程序服务将侦听端口80并将流量转发到您的容器端口。

     类似资料:
    • 问题内容: 我遇到错误了; 问题答案: 错误是 看来您有一个指的是您尚未声明的。 您需要具有以下声明

    • 我已经将python:3.8-slim-buster映像部署到应用程序服务中。一般来说,它运行正常,因为我可以在日志中看到处理过程,但是运行状况检查机制尝试ping托管服务器,但没有响应,因为它只是在循环中运行并处理队列中消息的代码。这很好,但应用程序将因以下错误而终止: 是否有办法删除此等待响应容器预热请求的

    • 在读取之前,我就会出现以下错误(我从中知道这一点)。 貌似是这句台词引起的: 这是使工作所需的,如本文所述(实际上,WebServlet在任何项目中没有就无法工作。我和其他人有一些使用的工作项目)。 虽然我没有这些文件,但我也有一个工作项目没有这些文件,所以它们显然不是必需的。我试着创建那个日志文件,因为它看起来像是Juli想告诉我什么。唉,它打开了,但没有向其中写入任何内容。 还显示,在打印异常

    • 首先,我知道有几个类似的问题,我尝试了答案中的建议,但没有帮助。 我有一个ASP。NET核心web应用程序作为Linux容器运行。该应用程序在本地构建并运行良好。部署到Azure时,应用程序无法启动,我可以看到以下错误: 站点mytestapp的容器mytestapp_0_560a15e8未在预期时间限制内启动。运行时间=230.4559912秒 容器mytestapp_0_560a15e8未响应

    • 问题内容: 我有一个嵌入式Tomcat服务器,可以 很好地提供静态文件。 但是,当我添加开始工作所需的buildPath代码时,它在我的一个项目中不起作用(项目之间存在很多差异……价值约5万行)。 在读取之前,我收到以下错误(我从中知道)。 似乎是由以下行引起的: 这是需要做的工作,如所描述这里(实际上,WebServlet确实没有不工作,在任何项目中,我和其他人使用的一些工作项目)。 显示Tom

    • 我正在部署一个web应用程序,它在Azure应用程序服务上使用NodeJS、Express和React(插入我的BitBucket repo),但我没有发现成功。要么部署失败,要么声称部署成功,但该站点无法访问,并且一直超时。当我在Azure诊断中检查Docker日志时,我注意到以下几点: 在几个读取