Разница между dev и prod в том что в дев я использую для отдачи webpack-dev-server(запуская в контейнере только команду `npm start`), а в прод для отдачи я буду использовать nginx(предварительно собрав frontend и запаковать его в образ к nginx).
Если смотреть по сервисам то в dev: backend и frontend(webpack-dev-server).
В prod: backend и nginx(собранный frontend)
Я сейчас размышляю как правильно сделать отдачу статики, как варианты есть nginx, пусть отдает статику. Но тут же возникает проблема. У меня backend используется только для API запросов. Либо есть вариант как сделано сейчас(приходится ручками собирать) делаю билд для frontend и для backend и копирую frontend/build в backend/build/static. О SSR речи не идет. Только отдача статики.
Есть такой вариант мы делаем backend только как API сервер, а frontend отдаем nginx'ом. Тогда вопрос как правильно паковать в докер nginx и статику.
Для development'a собираюсь использовать другой docker-compose конфиг, в котором nginx будет пропускаться и frontend будет отдаваться с помощью webpack-dev-server. Через docker-compose линкуем порты frontend и backend чтобы могли взаимодействовать.
Для production собираюсь создавать два образа докер с nginx+статика и backend отдельно. И так же линковать порты.
С nginx вариант мне нравится больше. Можно если что запустить больше одного инстанса backend и балансировать нагрузку.
Я так же умышленно умолчал про базу данных в этом проекте, её мы не пакуем в докер, она будет находится на хост машине(спорный вопрос конечно-же, хотелось бы и про это послушать).
Эта вся схема будет использоваться на CI(gitlab-ci) сервере с прогонами тестов и прочим. Там же будут и собираться образы. Хранится образы будут в gitlab-registry.
Правильно ли я мыслю? Хотелось бы чтобы можно было развернуть как production так и development режимы на локальной машине одной командой с указанием конфига docker-compose. Как это правильно сделать?
Написано
Войдите на сайт
Чтобы задать вопрос и получить на него квалифицированный ответ.
Если смотреть по сервисам то в dev: backend и frontend(webpack-dev-server).
В prod: backend и nginx(собранный frontend)