Skip to content

grantral/devops-test-task

 
 

Repository files navigation

Задание:

Необходимо поднять инфраструктуру сервисов, используя docker и docker-compose. Фронтом для приложения должен быть nginx.

Фактически, нужно, чтобы для запуска всего приложения можно было выполнить одну команду

docker-compose -f docker-compose.yaml up

на любом окружении.

Структура директорий:

  • api - nodejs backend, предоставляющий API для фронтенда
  • frontend - reactjs приложение
  • html - отрендеренные html страницы frontend'а

Требования:

  • При запросе страницы сайта необходимо отдавать отрендеренную статическую страницу, если её нет - то отдавать в браузер react'овский фронтенд При запросе / - html/main.html /about - html/about.html /catalog - html/catalog/index.html /catalog?id=X - html/catalog/X.html /product/X - html/product/productX.html

  • Редиректы:

    • Для страниц /catalog необходимо на уровне nginx'а настроить 301 редирект для этого типа урлов с /catalog/:id
    /catalog/5a26df2f-8ebd-47bd-8890-53b543247d33 => /catalog?id=5a26df2f-8ebd-47bd-8890-53b543247d33
    
    • Для страниц /product/:id, при id, не являющимся числом должен быть внутренний редирект на not-found.html
  • Страницы сайта должны быть защищены Content Security Policy, с запретом на добавление любых скриптов, в том числе inline'овых.

  • На все страницы сайта (и html и react) необходимо добавить inline-скрипт

    <script>console.log('trusted inline-script')</script>
    

    , установленный с помощью атрибута CSP nonce

  • В бэкенд при запросах должен передаваться исходный IP-адрес устройства, с которого был совершён запрос.

  • Настроить workflow на github'е (по добавлению тега версии), который будет собирать все образы инфраструктуры и деплоить их на dockerhub или в репозиторий github'а

Опционально

  • Запросы (при вводе адреса вручную) на все несуществующие страницы должны отдавать 404

  • Поддержка https

  • Разворот сервисов в kubernetes

Инструкция:

Все параметры в сервисы передаются с помощью переменных окружения

  • api: запускается командой yarn start env: PORT - порт, на котором будет запущен бэкенд, по умолчанию 3000. deps: перед сборкой/запуском установить зависимости с помощью команды yarn install
  • frontend: в папке есть файл README.md с инструкцией по сборке и запуску env: REACT_APP_API - домен api бэкенда deps: перед сборкой/запуском установить зависимости с помощью команды yarn install

Например, для запуска на локальной машине необходимо сделать:

cd backend/ && PORT=3001 yarn start
cd frontend/ && REACT_APP_API=http://localhost:3001 yarn start

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Packages

 
 
 

Languages

  • HTML 69.2%
  • JavaScript 24.8%
  • Dockerfile 3.9%
  • CSS 1.6%
  • Shell 0.5%