Настроить 2 сервера: dev и prod
Владимир19 лет в сервисе
Данные заказчика будут вам доступны после подачи заявки
02.02.2021
Необходимо настроить 2 сервера: Production и Development
- Создать 2 контейнера: для backend на php для laravel (mysql) с соответствующими библиотеками и расширениями, для frontend на JS для Nuxt.js (React.js) с использованием TypeScript с соответствующими библиотеками. (библиотеки уточнить у разработчиков). Образы каждого контейнера должны быть в репозиториях на github. Так же для удобной работы с базой данных нужен phpmyadmin, только он тоже должен работать через https.
- Контейнеры с mysql должны уметь делать бэкапы баз данных и по команде из контейнера заменять базу данных на сохраненный выбранный бэкап.
- Код в контейнерах должен быть доступен по ssh, чтобы его можно было править используя какой-либо файловый менеджер(редактор) или же код должен лежать вне контейнера на сервере, а в контейнерах будут содержаться только инструменты для работы с кодом, это нужно для тестовых правок без обязательных коммитов, такое можно сделать только на тестовом сервере!
- Сделать так чтобы эти контейнеры имели внутри себя сервер Nginx для работы с бэкэнд и с frondend (frondend будет на домене, backend на поддомене), чтобы оба контейнера можно было запустить как на сервере так и на локальной машине (по образам)
- Контейнеры будут работать на 2х серверах на тестовом и на продакшн, они не должны ничем отличаться, разве что кроме пары параметров - dev или production, в зависимости от которых будет определятся доменное имя DNS и настройки сборки проектов.
- Оба этих контейнера должны будут автоматически собираться по push или commit действиям в git соответствующих репозиториях. Делаться это должно с помощью инструмента Jenkins. Он может располагаться на боевом сервере в отдельном контейнере. При действиях в ветках dev - изменения должны происходить в контейнерах на тестовом сервере, при действиях в ветках master или main ( в зависимости от названия основной ветки) изменения должны происходить в контейнерах на production сервере.
- Если код проекта как frontend так и backend будет внутри контейнеров, то должны быть папки и файлы (такие как .env и скрипты) которые не должны меняться из коммитов github (их там и не будет), они должны быть положены в папки собранного проекта (или не удаляться от туда после пересборки проекта)
- Также должны быть выделены папки, которые не должны будут удаляться при пересборке или обновлении кода (в контейнере или вне контейнера), такие папки как хранилище фотографий, файлов, которые создает сам фреймворк.
- При обновлении контейнера или кода вне контейнера код не должен пересобирать весь целиком, возможна пересборка всего кода (за исключением определенных папок, как указано в пункте выше), но без обязательного обновления библиотек (vendor в backend и node_modules в frontend), обновление библиотек (а лучше удаление всех и установку снова) необходимо делать только при изменениях в файлах package.json для frontend и composer.json для backend.
- При коммитах в github репозиториях должны быть созданы actions или другой способ запуска и проведения написанных в фреймворках тестов, для того, чтобы отслеживать прохождение тестов во время коммита (если тесты не прошли нужно либо подтвердить коммит вручную на github, либо откатить изменения и доделать код, пока комит не пройдет) это не обязательн
- Должна быть составлена “методичка” о том как работать с контейнерами, как их отключать, включать, как работать с командами в контейнерах (как запускать команды внутри контейнеров), как работает jenkins и где конфигурация и настройки (файлы настроек или скрипты внутри самого приложения jenkins)
- Обсудить в дальнейшем возможность доработки сервера с djangodb и возможность создания распределенной базы данных с помощью контейнеров ( в рамках одного или нескольких серверов, сначала одного)