В этой главе о деплое Node.js вы узнаете, как развернуть приложения Node.js на сервер PaaS-провайдера (Heroku), либо с помощью Docker.
This article was translated to Russian by Andrey Melikhov, a front-end developer from Yandex.Money and editor of the collective blog about front-end, devSchacht. Find Andrey on: Twitter, GitHub, Medium & SoundCloud
Read the original article in English: How to Deploy Node.js Applications.
Перевод этой статьи сделан Андреем Мелиховым, фронтенд-разработчиком из компании Яндекс.Деньги, редактором коллективного блога о фронтенде, devSchacht. Twitter | GitHub | Medium | SoundCloud
Деплой Node.js на PaaS
Поставщики платформы как услуги (Platform-as-a-Service, PaaS) могут отлично подойти для команд, которые находятся на начальном этапе или создают небольшие приложения.
В этой части учебника вы узнаете, как использовать Heroku для лёгкого развёртывания Node.js-приложений.
Подготовка для Heroku
Для развертывания в Heroku нам нужно отправить код в удалённый git-репозиторий. Для этого добавьте свой публичный ключ в Heroku. После регистрации перейдите к своей учётной записи и сохраните его там (в качестве альтернативы вы можете сделать это с помощью CLI).
Нам также нужно будет загрузить и установить Heroku toolbelt. Чтобы убедиться, что ваша установка прошла успешно, выполните следующую команду в своём терминале:
heroku --version
heroku-toolbelt/3.40.11 (x86_64-darwin10.8.0) ruby/1.9.3
После того, как toolbelt запущен и работает, пройдите процедуру логина:
heroku login
Enter your Heroku credentials.
Email: [email protected]
Password:
(Для получения большей информации о тулките, посетите Heroku Devcenter)
Деплой на Heroku
Нажмите «Create New App», добавьте новое приложение и выберите регион. Через несколько секунд ваше приложение будет готово, и вы увидите следующий экран:
Перейдите на страницу настроек приложения и скопируйте Git URL. В своём терминале добавьте удаленный URL-адрес Heroku:
git remote add heroku HEROKU_URL
Вы готовы развернуть свое первое приложение в Heroku - это действительно просто git push:
git push heroku master
Как только вы это сделаете, Heroku начинает собирать ваше приложение и развернёт его. После развертывания ваш сервис будет доступен на странице https://YOUR-APP-NAME.herokuapp.com
.
Heroku Add-ons
Одной из наиболее ценных частей Heroku является экосистема, поскольку десятки партнёров предоставляют базы данных, инструменты мониторинга и другие решения.
Чтобы опробовать работу с дополнениями, установите Trace, наше решение для мониторинга Node.js. Чтобы сделать это, найдите Add-ons на странице своего приложения и начните вводить Trace, затем кликните на ссылку для установки. Легко, правда?
(Чтобы закончить интеграцию с Trace, следуйте нашей инструкции)
Деплой Node.js-приложения с помощью Docker
В последние годы Docker набирал мощный импульс и стал программным обеспечением для контейнеризации. В этой части учебника вы узнаете, как создавать образы из Node.js-приложений и запускать их.
«Docker для Node.js - отличный выбор, если вы хотите большего контроля и уменьшения затрат»
Основы Docker
Чтобы начать работу с Docker, загрузите и установите его с официального веб-сайта Docker.
Помещаем Node.js-приложение в Docker
Во-первых, мы должны выучить два понятия:
- Dockerfile: вы можете представить Dockerfile в качестве рецепта — он содержит инструкции по созданию Docker-образа
- Docker-образ: результат выполнения Dockerfile — это исполняемый юнит
Чтобы запустить приложение внутри Docker, мы должны сначала написать Dockerfile.
Dockerfile для Node.js
В корневой папке вашего проекта создайте пустой текстовый файл Dockerfile
, а затем вставьте в него следующий код:
FROM risingstack/alpine:3.3-v4.2.6-1.1.3
COPY package.json package.json
RUN npm install
# Add your source files
COPY . .
CMD ["npm", "start"]
Что можно здесь отметить:
FROM
: описывает базовый образ, используемый для создания нового образа — в данном случае он будет получен из публичного репозитория Docker HubCOPY
: эта команда копирует файлpackage.json
в Docker-образ, чтобы мы могли запускатьnpm install
внутриRUN
: это команда запуска, в данном случае она запускаетnpm install
COPY
снова: обратите внимание, что мы сделали копии в двух отдельных шагах. Причина в том, что Docker создаёт слои из результатов выполнения команд, поэтому, если нашpackage.json
не меняется, он не будет вызыватьnpm install
сноваCMD
: Docker-образ может иметь только одну командуCMD
— она определяет, какой процесс должен быть запущен образом
После того, как вы создали Dockerfile
, вы можете создать из него Docker-образ:
docker build .
Используете приватные NPM-модули? Прочитайте нашу инструкцию по установке приватных NPM-модулей в Docker!
После успешной сборки вы можете вывести список всех доступных образов с помощью:
docker images
Для запуска образа:
docker run IMAGE_ID
Поздравляю! Вы только что локально запустили докеризированное Node.js-приложение. Время развернуть его на сервере!
Деплой Docker-образов
Одна из замечательных особенностей Docker заключается в том, что, когда у вас есть собранный образ, вы можете запускать его повсюду — в большинстве окружений достаточно вызвать docker pull
вашего образа и запустить его.
Некоторые провайдеры, которые вы можете попробовать:
- AWSBeanStalk
- HerokuDockerSupport
- DockerCloud
- Kubernetes в Google Cloud — (я очень рекомендую прочитать нашу статью о переходе на Kubernetes с PaaS-провайдера)
Настройка их очень проста — если у вас возникнут проблемы,
не стесняйтесь задать вопрос в разделе комментариев!
В следующей главе Node Hero вы узнаете, как мониторить свои приложения Node.js, так, чтобы они могли быть онлайн 24/7.