Устали запускать свои замечательные приложения MERN Stack локально? Давайте воспользуемся этим шаблоном DevOps Stack для автоматизации хостинга вашего приложения MERN в облаке AWS.
Стек трубопроводов и технологий
- Стек веб-приложений: Стек MERN
- Фронтенд- Реагировать
- Бэкэнд - Mongo DB
- Управление пакетами - Node JS
- Управление API: Экспресс
- Контроль версий: Git с размещением репозитория GitHub.
- Непрерывная интеграция: Дженкинс
- Контейнерный движок: Docker
- Автоматизация инфраструктуры: HashiCorp Terraform
- Облачные сервисы: 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.