Как запустить приложение Node.js в службе приложений Azure? - PullRequest
0 голосов
/ 01 октября 2018

Я пытаюсь запустить простейшие приложения node.js в службе приложений Azure (Linux), но у меня нет идей, как это запустить.Я пробовал разные подходы, и, похоже, ничего не работает.

Я просто развертываю приложение через FTP и помещаю файлы в «wwwroot», но при запросе URL оно загружается навсегда, а затем заканчиваетсяответ службы недоступен.

При создании приложения я выбираю Linux в качестве платформы, запускаю node.js 8.11 и развертываю через «код», а не через докер.

В журналах я вижу это:

docker run -d -p 46852:8080 --name [appname] -e WEBSITE_NODE_DEFAULT_VERSION=8.11 -e APPSETTING_WEBSITE_NODE_DEFAULT_VERSION=8.11 -e WEBSITE_SITE_NAME=[appname] -e WEBSITE_AUTH_ENABLED=False -e WEBSITE_ROLE_INSTANCE_ID=0 -e WEBSITE_INSTANCE_ID=[id] -e HTTP_LOGGING_ENABLED=1 appsvc/node:8.11.2_1805212105

Container [appname] for site [appname] did not start within expected time limit. Elapsed time = 230.4882261 sec

Что это значит, используется ли докер как-то, даже если я настроил приложение с развертыванием через «Код» и FTP.

package.json

{
  "name": "foo",
  "version": "1.0.0",
  "description": "x",
  "author": "x",
  "private": true,
  "scripts": {
    "start": "node server.js"
  },
  "dependencies": {
    "express": "^4.16.3"
  }
}

server.js

const express = require('express')
const app = express()

const port = process.env.PORT || 3000
const host = process.env.HOST || '127.0.0.1'

app.get('/', (req, res) => res.send('Hello!'))

app.listen(port, host)

Я также пробовал ssh в приложение и запускаю npm install.Я попытался запустить приложение через консоль ssh node server.js, но в результате появляется сообщение «Порт уже используется».Я попытался установить порт 8080 в «настройках приложения» на портале Azure.

Что мне здесь не хватает?Как мне запустить приложение?

Ответы [ 2 ]

0 голосов
/ 02 октября 2018

На моем сайте я только что сделал app.listen(process.env.port); - без аргумента хоста.И попробуйте сделать npm start.

Также проверьте web.config и iisnode.yml, которые генерируются автоматически и необходимы для запуска узла.

0 голосов
/ 01 октября 2018

Прежде всего, было бы хорошо узнать, как именно вы создаете свое приложение (используемые инструменты, предпринятые шаги и т. Д.).В целом, главное понять - служба приложений Azure не использует Node.js по умолчанию, то есть после того, как вы его подготовили.Чтобы указать, что на хосте будет работать приложение Node, необходимо установить параметр «WEBSITE_NODE_DEFAULT_VERSION» (в колонке «Параметры приложения» в службе приложений Azure).После этого вы можете развернуть любой доступный вариант (используя функцию публикации, локальный git, используя DevOps Azure и т. Д.). Вот хорошая тема для начала .Перейдем прямо к делу:

  • Установите Azure CLI
  • Войдите в Azure (az login)
  • az покажите учетную запись (чтобы увидеть, есть ли у вас праваподписка, на случай, если их много).Используйте 'az account set' для переключения при необходимости
  • Затем, согласно этой инструкции, создайте группу ресурсов, план обслуживания и веб-приложение.Установить Node.js время выполнения
  • Сжать приложение (согласно инструкции, используя Bash или PS)
  • В службе приложений развернуть приложение (в архиве) с помощью консоли Kudu (Инструменты разработки ->Блейд Advanced Tools, выберите Tools -> Zip Push Deploy из выпадающего меню)
  • Просмотрите результаты.
...