title: Azure: Container did not start within expected time (WebApp)
body: <p>I'm getting the following error when trying to deploy a webapp:</p>
  
  <p><strong>ERROR - Container XXX_0 for site XXX did not start within expected time limit. Elapsed time = 1800.4463925 sec</strong></p>
  
  <p>I'm trying to deploy a node app. Using automatic deployment with a .deployment file. The .deployment file looks as follows:</p>
  
  <pre><code># 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 - &gt; /dev/null
  fi
  
  #####################################################################################
  echo "Finished successfully."
  </code></pre>
  
  <p>The package.json file has the following script:</p>
  
  <pre><code>  "scripts": {
      "dev": "node server.js",
      "build": "next build",
      "start": "echo 'work!!' &amp;&amp; NODE_ENV=production &amp;&amp; node server.js"
    }
  </code></pre>
  
  <p>And server.js is as follows:</p>
  
  <pre><code>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(() =&gt; {
      console.log("Ready on Localhost:80!!!");
      createServer(handler)
        .listen(80, (err) =&gt; {
          if (err) throw err;
          console.log("Ready on Localhost:80");
        });
    })
  </code></pre>
  
  <p>What I've gathered from research is that:</p>
  
  <ol>
  <li>There is not enough time for the app to start </li>
  <li>The port isn't open/ doesn't respond to a <a href="https://blogs.msdn.microsoft.com/waws/2017/09/08/things-you-should-know-web-apps-and-linux/#NoPing" rel="noreferrer">ping at start up</a></li>
  </ol>
  
  <p>To solve (1) I  set WEBSITES_CONTAINER_START_TIME_LIMIT to 1800 (which is the max)</p>
  
  <p>To solve (2) I set WEBSITES_PORT (in app setting) with a value of "80" to expose that port. (As per documentation)</p>
  
  <p>Any others things I should try ?</p>
  
  <p>PS the default docker log file outputs the following:</p>
  
  <pre><code>2018-10-15T14:32:59.946431939Z &gt; XXX@1.0.0 start /home/site/wwwroot
  2018-10-15T14:32:59.946455839Z &gt; echo 'work!!' &amp;&amp; NODE_ENV=production &amp;&amp; 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
  </code></pre>