Azure: контейнер не запустился в течение ожидаемого времени (WebApp) - PullRequest
0 голосов
/ 15 октября 2018

При попытке развернуть веб-приложение я получаю следующую ошибку:

ОШИБКА - Контейнер XXX_0 для сайта XXX не запустился в течение ожидаемого срока.Истекшее время = 1800.4463925 с

Я пытаюсь развернуть приложение узла.Использование автоматического развертывания с файлом .deployment.Файл .deployment выглядит следующим образом:

# 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 содержит следующий скрипт:

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

И server.js выглядит следующим образом:

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");
      });
  })

Из исследований я понял, что:

  1. Недостаточно времени для запуска приложения
  2. Порт не открыт / не отвечает на запросы ping при запуске

Для решения (1) я установил WEBSITES_CONTAINER_START_TIME_LIMIT равным 1800 (что является максимальным значением)

Для решения (2) я установил WEBSITES_PORT(в настройках приложения) со значением «80», чтобы открыть этот порт.(Согласно документации)

Есть ли что-то еще, что я должен попробовать?

PS Файл журнала Docker по умолчанию выводит следующее:

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

1 Ответ

0 голосов
/ 22 февраля 2019

Для меня настройка -Port 80 и -WEBSITES_PORT 80 в Azure App Service Deploy задании, App Settings раздел в лазурных девопах помог.Он заставил docker запускаться с порта 80 вместо 8000. Это пример использования настроек приложения для этой задачи.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...