Устали запускать свои замечательные приложения MERN Stack локально? Давайте воспользуемся этим шаблоном DevOps Stack для автоматизации хостинга вашего приложения MERN в облаке AWS.

Стек трубопроводов и технологий

  1. Стек веб-приложений: Стек MERN
  • Фронтенд- Реагировать
  • Бэкэнд - Mongo DB
  • Управление пакетами - Node JS
  • Управление API: Экспресс
  1. Контроль версий: Git с размещением репозитория GitHub.
  2. Непрерывная интеграция: Дженкинс
  3. Контейнерный движок: Docker
  4. Автоматизация инфраструктуры: HashiCorp Terraform
  5. Облачные сервисы: Amazon Web Services - AWS Fargate

Проект размещен на GitHub по этой ссылке.

Процедура

Шаг 1) Создание приложения MERN

Основной сайт основан на замечательном учебнике, созданном Брэдом Трэверси.

Основные файлы проекта:

  • package.json - основной файл конфигурации сервера
  • server.js - исполняемый скрипт для запуска сервера
  • client / src / App.js - основной JS-файл для клиентского приложения.
  • client / src / components / AppNavbar.js
  • client / src / components / Evangelist.js

Давайте создадим это приложение на локальной рабочей станции:

  • Установите модули узла и зависимости для серверного приложения
$ npm install

  • Установите модули узлов и зависимости для клиентского приложения
$ npm run client-install

  • Одновременный запуск клиентского и серверного приложений
$ npm run dev 

Теперь перейдите в браузер и откройте http: // localhost: 3000.

Добавьте несколько элементов и удалите элемент по умолчанию.

Шаг 2) Размещение веб-приложения в репозитории GitHub

Проект размещен на https://www.github.com/hkshitesh/SPCM-2020/R171217041/.

Шаги по размещению проекта на GitHub:

  • Инициализировать локальную рабочую область как проект git
$ git init
  • Подготовьте файлы для добавления на GitHub
$ git add [file1] [file2] ...
  • Зафиксируйте изменения с соответствующим сообщением фиксации
$ git commit -m "<Commit Message>"
  • Создайте восходящую ссылку с вашим репозиторием на GitHub
$ git remote add origin [Repository URL]
  • Отправьте изменения на GitHub
$ git push -u origin master

Шаг 3) Настройка сборки с непрерывной интеграцией с Jenkins

  • Запустить сервер Jenkins на локальном хосте
$ java -jar jenkins.war

Перейдите на http: // localhost: 8080, который является хостом по умолчанию для локального сервера Jenkins.

После входа в систему создайте Новый элемент - ›Новая работа с именем и описанием по вашему выбору.

  • Добавьте Git SCM и укажите URL-адрес вашего репозитория GitHub

  • Создайте действие сборки задания оболочки для выполнения команд NPM.

Последние две строки в командах оболочки используются для удаления зависимостей для оптимизации следующего шага контейнеризации, поскольку Docker отправляет всю локальную рабочую область демону Docker перед выполнением файла Dockerfile.

  • Сохранить изменения. Скомпилируйте проект и посмотрите консольный вывод

Шаг 4) Создание контейнера для приложения MERN

Перед контейнеризацией приложения создайте репозиторий для образа Docker на DockerHub.

  • Создайте Dockerfile с Node в качестве базового образа

RUN vs CMD Command: команда RUN указывает задачи, которые будут выполняться при создании образа докера, а команда CMD указывает задачи, которые будут выполняться при запуске контейнера докера.

  • Создайте образ Docker
$ docker build -t nishkarshraj/mern-stack .

  • Запустите контейнер Docker, чтобы протестировать приложение локально.
$ docker run -it -p 3000:3000 nishkarshraj/mern-stack

Приложение работает в интерактивном режиме с совместным использованием порта 3000 портов.

  • Создайте задачу Docker Build and Push на Jenkins и отправьте образ Docker на DockerHub.

Посмотрим на журнал консоли об этом изменении.

Шаг 5) Настройка автоматизации инфраструктуры с помощью Terraform и AWS Cloud

  • Установите пакет AWS-CLI, который используется для безопасного хранения учетных данных пользователей AWS IAM и отсоединяет их от сценариев терраформирования.
$ apt install -y awscli
  • Создайте файл учетных данных
$ aws configure

Terraform используется для автоматизации инфраструктуры в облаке AWS путем создания кластера Fargate и удаленного запуска нашего образа Docker.

Давайте посмотрим на файлы сценариев терраформирования, используемые в этом проекте:

  • provider.tf
  • variables.tf
  • security.tf
  • ecs.tf

Давайте проверим конфигурации Terraform локально.

  • Инициализируйте проект terraform и установите зависимости.
$ terraform init

  • Создайте план и посмотрите, какие изменения произойдут в облаке после события применения
$ terraform plan

  • Примените изменения и разместите проект в облаке
$ terraform apply -auto-approve

Выделенная ссылка - это место, где наш контейнерный проект размещен в кластере Fargate. Щелкните по нему, чтобы просмотреть веб-приложение в Интернете.

  • Создание автоматизации Jenkins для конфигураций Terraform

  • Проверьте вывод консоли

Вот и все. Мы успешно разместили наше приложение MERN в контейнерной форме в кластере AWS Fargate.