Как организовать правильное взаимодействие контейнеров nginx, и node fronted (nginx virtual host), node backend (nginx reverse proxy)?
Я делаю проект, состоящий из Nginx, frontend, который при помощи вебпак собирает мне html и js файлы в отдельную папку, которую я хочу добавлять в location nginx, и бэкенд, который будет вероятно на ноде, и подключается через reverse proxy.
Вопрос состоит в том, как грамотно организовать контейнеризацию и хранение в репозиториях. Мне нужно это разворачивать на удалённом сервере, что я планирую делать через github-actions (очень хотелось бы, потому что я пока новичок, и такие вещи, как jenkins, я пока не освоил).
Так вот, стоит ли, к примеру, фронт и бэк побить на разные репозитории, настроить каждому отдельный воркфлоу? Стоит ли билдить фронтенд в контейнере, что очень хотелось бы, чтобы нода с зависимостями была изолирована от сервера? Как при этом перезапускать (и нужно ли) nginx в контейнере? Стоит ли вообще nginx в контейнер пихать, что тоже очень хотелось бы (при том, что я буду собирать его через make)?
Может, вообще было бы разумнее всё в одном репозитории хранить, но сделать несколько dockerfile, docker-compose?
Вопросы возникают в основном из-за отсутствия опыта и каши в голове. В самих принципах я более менее разобрался, настроив один github-actions, который разворачивает на моём сервере контейнер.
Хотелось бы получить развёрнутый ответ, чтобы привести все мысли в порядок =)
Дополнительно:
Содержание
Ответы:
Стоит ли билдить фронтенд в контейнере, что очень хотелось бы, чтобы нода с зависимостями была изолирована от сервера?
стоит
фронт и бэк побить на разные репозитории, настроить каждому отдельный воркфлоу?
лучше разнести, да, чтобы потом изменения фронта не тащили деплой фронта и наоборот, ну тут все и так понятно
Может, вообще было бы разумнее всё в одном репозитории хранить, но сделать несколько dockerfile, docker-compose?
это можно (иногда очень удобно, как в моем проекте, где всего бек сервиса и 1 фронт), но деплой и воркфлоу будут разные все равно
Стоит ли вообще nginx в контейнер пихать, что тоже очень хотелось бы (при том, что я буду собирать его через make)?
Да вполне, максимально близко к проду
Как при этом перезапускать (и нужно ли) nginx в контейнере?
Нжинкс сам не перезапускают, просто контейнер перезапустить
Для решения данной проблемы вы можете воспользоваться услугами фрилансеров. Мы выполним необходимую работу быстро и качественно.
Оставить комментарий Отменить
Ответы
- Есть ответ! к записи Как уменьшить масштаб меньше 100% в Windows 10 (22H2)
- Есть ответ! к записи Аналоги CloudFlare в России?
- Есть ответ! к записи Аналоги CloudFlare в России?
- Есть ответ! к записи Как называется человек, который дизайн придумает для сайта и сверстает его?
- Есть ответ! к записи Можно ли установить Яндекс.Диск на АльтЛинукс?
- Есть ответ! к записи Картинки мутные только на сафари, есть выход?
- Есть ответ! к записи Keenetic. Как настроить SSTP клиент с сертификатом?
- Есть ответ! к записи Чем заменить executor в aiogram 3?
Для организации правильного взаимодействия контейнеров nginx, node fronted и node backend через nginx virtual host и reverse proxy, необходимо следовать определенным шагам.
1. Настройка контейнера nginx:
Сначала необходимо создать контейнер nginx, в котором будут настроены виртуальные хосты для fronted и backend. Для этого в файле конфигурации nginx (обычно это файл nginx.conf) необходимо добавить блоки server для каждого виртуального хоста. Например, для fronted:
А для backend:
2. Настройка контейнеров node fronted и node backend:
Для контейнеров node fronted и node backend необходимо настроить их приложения так, чтобы они слушали порты, указанные в конфигурации nginx. Например, для node fronted:
А для node backend:
3. Сборка и запуск контейнеров:
После настройки всех компонентов, необходимо собрать и запустить контейнеры с помощью Docker Compose (или другого инструмента управления контейнерами). В файле docker-compose.yml необходимо указать настройки для каждого контейнера, а также их взаимодействие.
4. Проверка работоспособности:
После запуска контейнеров можно проверить работоспособность приложения, обратившись к соответствующим виртуальным хостам в браузере. Например, открыв fronted.example.com и backend.example.com должны отображаться соответствующие приложения.
Следуя этим шагам, вы сможете успешно организовать взаимодействие контейнеров nginx, node fronted и node backend через nginx virtual host и reverse proxy.