Azure:容器未在预期的时间内启动(WebApp) [英] Azure: Container did not start within expected time (WebApp)

查看:93
本文介绍了Azure:容器未在预期的时间内启动(WebApp)的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

尝试部署Web应用程序时出现以下错误:

I'm getting the following error when trying to deploy a webapp:

错误-网站XXX的容器XXX_0未在预期的期限内启动.经过的时间= 1800.4463925秒

我正在尝试部署节点应用程序.对.deployment文件使用自动部署. .deployment文件如下所示:

I'm trying to deploy a node app. Using automatic deployment with a .deployment file. The .deployment file looks as follows:

# 1. KuduSync
if [[ "$IN_PLACE_DEPLOYMENT" -ne "1" ]]; then
  "$KUDU_SYNC_CMD" -v 50 -f "$DEPLOYMENT_SOURCE" -t "$DEPLOYMENT_TARGET" -n "$NEXT_MANIFEST_PATH" -p "$PREVIOUS_MANIFEST_PATH" -i ".git;.hg;
.deployment;deploy.sh"
  exitWithMessageOnError "Kudu Sync failed"
fi

# 2. Select node version
selectNodeVersion

# 3. Install npm packages for root directory
if [ -e "$DEPLOYMENT_TARGET/package.json" ]; then
  cd "$DEPLOYMENT_TARGET"
  # echo "Running $NPM_CMD install --production for root directory"
  # eval $NPM_CMD install --production
  echo "Running $NPM_CMD install --production for root directory"
  eval $NPM_CMD install
  exitWithMessageOnError "npm failed"
  ##################
  echo Building App...
  eval $NPM_CMD run build
  ##################
  echo Starting App...
  # eval $NPM_CMD run start
  # cd - > /dev/null
fi

#####################################################################################
echo "Finished successfully."

package.json文件具有以下脚本:

The package.json file has the following script:

  "scripts": {
    "dev": "node server.js",
    "build": "next build",
    "start": "echo 'work!!' && NODE_ENV=production && node server.js"
  }

server.js如下:

And server.js is as follows:

const {
  createServer
} = require('http')
const next = require('next')
const app = next({
  dev: process.env.NODE_ENV !== 'production'
})
const routes = require('./routes')
const handler = routes.getRequestHandler(app)
console.log("HEYYYY");
// Without express
app.prepare()
  .then(() => {
    console.log("Ready on Localhost:80!!!");
    createServer(handler)
      .listen(80, (err) => {
        if (err) throw err;
        console.log("Ready on Localhost:80");
      });
  })

我从研究中收集到的是:

What I've gathered from research is that:

  1. 没有足够的时间启动应用程序
  2. 端口未打开/未响应要解决(1),我将WEBSITES_CONTAINER_START_TIME_LIMIT设置为1800(最大值)

    To solve (1) I set WEBSITES_CONTAINER_START_TIME_LIMIT to 1800 (which is the max)

    要解决(2),我将WEBSITES_PORT(在应用程序设置中)设置为"80"以公开该端口. (根据文档)

    To solve (2) I set WEBSITES_PORT (in app setting) with a value of "80" to expose that port. (As per documentation)

    还有其他我应该尝试的事情吗?

    Any others things I should try ?

    PS默认docker日志文件输出以下内容:

    PS the default docker log file outputs the following:

    2018-10-15T14:32:59.946431939Z > XXX@1.0.0 start /home/site/wwwroot
    2018-10-15T14:32:59.946455839Z > echo 'work!!' && NODE_ENV=production && node server.js
    2018-10-15T14:32:59.946462839Z 
    2018-10-15T14:33:00.249554126Z work!!
    2018-10-15T14:34:41.634101502Z HEYYYY
    2018-10-15T14:35:38.838555689Z  DONE  Compiled successfully in 48099ms14:35:38
    2018-10-15T14:35:38.838868291Z 
    2018-10-15T14:35:39.406086808Z Ready on Localhost:80!!!
    2018-10-15T14:35:39.460029162Z Ready on Localhost:80
    

    推荐答案

    对于我来说,在Azure App Service Deploy任务中同时设置-Port 80-WEBSITES_PORT 80,天蓝色devops中的App Settings部分很有帮助.它使docker从端口80开始而不是8000.它位于

    For me setting both -Port 80 and -WEBSITES_PORT 80 in Azure App Service Deploy task, App Settings section in azure devops helped. It made docker to start with port 80 instead of 8000. It is in example of app setting usage for that task.

    这篇关于Azure:容器未在预期的时间内启动(WebApp)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆