Рубрики
Без рубрики

Развертывание приложений Node.js к AWS EC2 с Docker

AWS EC2 – основной сервис и основание для многих других услуг. В этой статье мы будем создавать приложение узла с Docker, настроив экземпляр EC2 и развертываю нашему приложению к нему.

Автор оригинала: Josh Simpson.

Вступление

После того, как вы написали веб-приложение, есть десятки предложений, чтобы получить ваше приложение онлайн и пригодным для использования другими людьми. Одно известное предложение является частью платформы Amazon Web Services (AWS) – Упругое вычислительное облако (EC2).

EC2 является основной частью AWS, и множество других услуг AWS построен на нее – поэтому приятно получить понимание того, что есть EC2 и как развернуть его.

В этом руководстве мы собираемся создать приложение Node.js с Docker, Start и настроить экземпляр EC2 и развернуть наше приложение к нему. В конце этого учебника у вас будет приложение узла работает на AWS, и лучшее понимание того, как взаимодействовать с сервисом CORE AWS.

Предпосылки

AWS аккаунт

Amazon Web Services (AWS) – это коллекция инструментов для строительства приложений в облаке. Поскольку EC2 – это служба AWS, нам нужно будет настроить учетную запись AWS.

AWS имеет свободный уровень для многих потрясающих вещей, и EC2 не является исключением – вы можете использовать 750 часов (31 день) EC2 в месяц в свободном уровне на целый год.

Докер

Докер Позволяет нам свернуть наши приложения на небольшие, легко развертываемые единицы, которые можно запускать где угодно где установлен Docker. Это больше не значит, что это работает на моей машине!

Эта статья предположила основное знакомство с Docker, и не будет на нем не будет ни в некоторой глубине – однако, если вы хотите сделать более глубокое погружение, попробуйте развертывать приложение Node.js в капельку Doceper.

Узел приложения

Давайте сделаем действительно простое приложение узла, которое отвечает на запрос. Для этого мы откроем терминал и запустим:

$ mkdir node-ec2
$ cd node-ec2
$ npm init

Это создаст новую папку, перемещающую в эту папку, а затем инициализирующую новое приложение узла.

Давайте придерживаться NPM по умолчанию на данный момент – эта статья предполагает, что вы оставили точку входа, как index.js Отказ Это будет генерировать наши Package.json Файл, который по существу является файлом конфигурации для нашего приложения.

Однажды Package.json Файл создан, откройте его и добавьте следующую строку в начало Сценарии раздел:

"start": "node index.js",

Делая это, вместо бега Узел index.js мы будем использовать NPM начать , который будет запускать все в нашем скрипте. В этом конкретном случае он просто работает Узел index.js Однако на самом деле это может быть намного больше, чем это. Например, если мы можем добавить флаги в команду без необходимости вводить ее каждый раз, или мы могли бы установить некоторые переменные среды, такие как Node_env = Производственный узел index.js Отказ

Чтобы обслуживать наши запросы, мы будем использовать Экспресс Framework – это минималистично, и легко начать с:

$ npm install express --save

Наше Package.json теперь должен выглядеть что-то вроде этого:

{
  "name": "app",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "start": "node index.js"
  },
  "author": "",
  "license": "ISC",
  "dependencies": {
    "express": "^4.17.1"
  }
}

Дождитесь установки, а затем мы собираемся открыть наш предпочтительный редактор кода, чтобы создать еще один новый файл в том же месте, называемом index.js Отказ

Файл будет настроить Express и определить обработчик запроса:

const express = require('express');
const app = express();
const port = 3000;

app.get('/status', (req, res) => res.send({status: "I'm alive!"}));

app.listen(port, () => console.log(`Example app listening on port ${port}!`));

Это приложение начнется на порту 3000 и будет служить конечной точкой в /Статус Отказ Мы можем проверить это работает, работая:

$ npm start
Example app listening on port 3000!

Направляясь в http://localhost: 3000/Состояние – Мы должны получить ответ на {Статус: «Я жив!»} Отказ Как только это успешно, обязательно остановите сервер Ctrl + C Отказ

С нашим простым приложением узла готово, давайте перевернем его в документ докера, который мы развернумся в EC2.

Применение приложения узла

Создайте новый файл в том же каталоге, что и приложение вашего узла, называемое Dockerfile :

FROM node:13-alpine

WORKDIR /usr/src/app

COPY package*.json ./

RUN npm install

COPY . .

EXPOSE 3000
CMD [ "node", "index.js" ]

Это базовый DockerFile, который можно использовать для большинства простых приложений узла. Далее давайте построим изображение Docker, а затем запустите его, чтобы убедиться, что он работает правильно:

$ docker build . -t ec2-app
$ docker run -p 3000:3000 ec2-app

Если вы перейдите к http://localhost: 3000/Состояние Опять же, вы должны увидеть тот же ответ статуса из ранее. Выйдите из процесса с Ctrl + C очередной раз.

Наконец, давайте подтолкнум наш образ докера на Докер Хаб :

$ docker login # Use your Docker Hub credentials here
$ docker tag ec2-app /ec2-app
$ docker push /ec2-app

Настройка EC2.

С нашей приложением «докерена» нам необходимо настроить экземпляр EC2 для его работы.

Отправляйтесь на AWS и войдите в систему.

Нажмите на «Услуги» Выпадающее меню в верхней части страницы и найдите ‘EC2’ Отказ AWS в настоящее время экспериментирует с их интерфейсом, поэтому вы должны увидеть страницу, которая выглядит что-то вроде ниже, но центр страницы может выглядеть немного по-другому.

Нажмите на «Экземпляры» Ссылка слева.

EC2 Добро пожаловать

На следующем представлении нажмите «Начальный экземпляр» кнопка. Вы увидите страницу, которая выглядит так:

EC2 AMI Выбор

Амис

Это где мы выбираем Amazon Machine Image – или AMI коротко. AMI – это сервер «из коробки» и может пойти с несколькими конфигурациями.

Например, мы могли бы выбрать один из Быстрый запуск Amis которые имеют Amazon Linux 2 На них или если вы прокрутите вниз, на них есть экземпляры с Ubuntu, и т. Д.

Каждый AMI – это замороженное изображение машины с операционной системой и, потенциально некоторое дополнительное программное обеспечение.

Чтобы сделать все возможное, мы можем использовать это для создания экземпляра EC2 с Docker, уже настроенным для нас!

Для этого нам нужно выбрать «AWS Marketplace» Слева, а затем в поле поиска мы хотим ввести «ECS» Отказ Мы должны получить несколько результатов, но мы хотим ECS оптимизировала Amazon Linux 2 ‘ изображение.

Это изображение поставляется с Docker и оптимизировано для беговых контейнеров. Хит «Выбрать» на выбранном изображении, и мы продолжим на следующую страницу:

Выбирая ами

Типы экземпляров

На следующем представлении мы выбираем, какой тип экземпляра мы хотим. Как правило, это диктует ресурсы, доступные для сервера, на котором мы запускаемся, с расходами на масштабирование для более эффективных машин.

T2.Micro Тип экземпляра имеет право на свободный уровень, поэтому рекомендуется использовать это:

Выбор типа экземпляра EC2

Выберите соответствующий флажок, а затем нажмите «Обзор и запустить» в правом нижнем углу. Нажмите «Запуск» В том же месте на следующей странице, и вы получите всплывающее окно, чтобы выбрать или создать ключевую пару.

Выберите первый выпадающий и выберите «Создать новую ключевую пару» Отказ Под «Ключевое имя пара» Введите то, что вы хотите позвонить в вашу ключевую пару.

Обязательно «Скачать ключевую пару» С правой стороны – это то, что мы будем использовать для доступа к нашему экземпляру EC2.

Выбрав «Начальный экземпляр» Опять же, ваш экземпляр EC2 должен начать работу:

Запуск экземпляра

Нажмите на выделенную ссылку, которая должна быть взята на страницу детализации экземпляра.

Группы безопасности

Прежде чем мы попробуем запустить наше приложение, нам нужно убедиться, что мы сможем получить доступ к приложению.

Большинство ресурсов AWS работают под «Группы безопасности» – Эти группы диктуют, как могут быть доступны ресурсы, на каком порту, и из которых IP-адреса.

Нажмите Группу безопасности, выделенные здесь:

Ссылка группы безопасности

Отсюда вы сможете увидеть подробную информацию о группе безопасности, включая входящие и исходящие правила на различных вкладках. Под въездной вкладкой вы надеетесь увидеть это:

Входящие правила

Что это значит это то, что трафик, который приходит через порт 22 Используя протокол TCP, допускается из любого места ( 0.0.0.0/0 Значение в любом месте ). Нам нужно добавить еще одно правило, чтобы позволить кому-либо получить доступ к нашему приложению в порту 3000 Отказ

В верхней части страницы нажмите «Действия» а затем нажмите «Изменить входящие правила» Отказ В диалоговом окне, который открывается, нажмите «Добавить правило» Отказ

Установите диапазон портов правила на 3000 И в соответствии с источником щелкните раскрывающуюся и выберите «Где-нибудь» Отказ Остальное должно быть автоматически заполнено.

В конечном итоге, вы должны в конечном итоге с чем-то вроде:

Редактирование входящих правил

Подключение к вашему экземпляру EC2

Вернитесь к «Экземпляры» страница (щелкните ссылку слева) и выберите экземпляр, который вы создали ранее. Адрес для вашего экземпляра EC2 находится над ссылкой на группы безопасности под «Публичные DNS» поле.

Вернитесь к терминалу и перейдите к папке, в которой находится ключевая пара, которую вы загрузили ранее ранее. Он будет назван как все, что вы ввели на имя ключ, с помощью .pem как его расширение.

Изменим разрешения ключей, а затем SSH в экземпляр EC2:

$ chmod 400 
$ ssh -i [email protected]

Отсюда, нам просто нужно запустить наше приложение через Docker:

$ docker run -p 3000:3000 /ec2-app

Вы сможете достичь экземпляра, используя тот же адрес, который вы использовали для SSH в экземпляре. Просто навигайтесь в своем браузере:

:3000/status

Ваше приложение должно вернуть конечную точку статуса, которые мы видели ранее. Поздравляем, вы просто запустите свое первое приложение на EC2!

Что дальше?

Запустите свое приложение без головы

Быстрая победа, однако, это управлять приложением «без головы». На данный момент ваше приложение в данный момент работает в вашей сессии Shell – и как только вы закроете этот сеанс, приложение завершится!

Чтобы начать приложение таким образом, чтобы он продолжал запускать на заднем плане, запустите приложение с дополнительным -d флаг:

$ docker run -d -p 3000:3000 /ec2-app

Безопасность

Возможно, вы захотите вернуться и затянуть безопасность на экземпляре/эксперименте с различными конфигурациями – таким как настроить его так, чтобы только Мы Может получить доступ к порту SSH, например.

Изменить «Источник» поле на первом правиле до «Мой IP» – AWS автоматически выясняется, где вы обращаетесь к нему.

Примечание: Если вы проходите через этот учебник на ходу, или вернитесь к нему позже, ваш компьютер может иметь другой IP, чем когда вы изначально устанавливаете «Мой IP» Отказ Если вы столкнетесь с любыми трудностями позже, убедитесь, что вернитесь здесь и выберите «Мой IP» очередной раз!

Другие Амис

Существуют сотни разных AMIS, много из разных сообществ, при этом приложения уже предварительно установлены – стоит взглянуть, чтобы увидеть, есть ли простой способ настроить то, с чем вы хотели работать!

Добавление домена

Теперь, когда у вас есть приложение, работающее на сервере, вы можете настроить доменное имя и точку, что при приложении.

Заключение

EC2 действительно является основой многих услуг AWS – например, RDS (AWS »Служба базы данных) действительно просто оптимизирована экземпляры EC2 с хорошей приборной панелью.

Понимание этого основного продукта в AWS ‘Arsenal связано с открытыми дверями к новым способам реализации идей.

В этом руководстве мы создали простое приложение Node.js с помощью Express, установив его, установив EC2 для развертывания и, наконец, – развернул его к экземпляру EC2.