2016-02-29 2 views
2

Стек состоит из нескольких приложений/microservices должен быть подключен, чтобы запустить локально в процессе развития, и каждый в своем собственном хранилищеКак разрабатывать приложения с Докер, которые находятся в отдельных хранилищах

Э.Г. frontend, db, api

Если у каждого приложения есть свой файл Dockerfile и docker-compose.yml, в котором перечислены необходимые службы для запуска этого приложения, какие методы рекомендуется для разработки всего стека?

ответ

1

Это именно то, что мы делаем на работе.

Передний конец с угловым запуском на Apache (prod) или узле (dev) Все стандартные требования к болоту обрабатываются нормально, все запросы в контейнер api имеют/imanapicall в URL-адресе и проксируются в контейнер api на основании того факта, что url содержит/imanapicall Это стандартная практика. Контейнер Fe не имеет гражданства.

У нас есть узел работает АНИ, он является лицом без гражданства и просто запрашивает данные из БД и отправляет его обратно к переднему концу

Мы узел работает restify, но выражают более популярным

Тогда большинство людей используют MongoDB, но мы используем какой-то странный db-материал.

Важно, чтобы открывать порты между контейнерами, убедитесь, что брандмауэры не являются болью. Для целей dev вы хотите открыть порты для всех контейнеров для размещения также, так что вы можете легко отлаживать, например, ударить экспресс-точку напрямую, чтобы убедиться, что она дает мне то, что я хочу.

Ps безгражданства важны для поддержки масштабирования, поэтому я может ввести балансировщик нагрузки и не беспокоиться о том, на каком сервере он попадает. Только дб контейнер поддерживает состояние

ДАЛЕЕ на ваш комментарий ...

Каждый ярус (БД, API и т.д.) имеет свой собственный GIT репозиторий. Каждый git repo имеет автоматическую работу Jenkins, которая выполняет сборку (при нажатии на репо) и при успешном нажатии на нее выводится новое изображение докеров.

Затем у нас есть еще один репортер git, который несет ответственность за то, чтобы потянуть все это вместе. это репо состоит в основном из файла, создающего докер, чтобы вытащить все соответствующие контейнеры и запустить их. работа выполнена.

Это дает простой обзор. если у вас есть более подробные вопросы, не стесняйтесь спрашивать.

FINE ДЕТАЛЬ ...

При разработке БД уровня не возникает никаких трудностей.

Однако, во время разработки apiier, этот уровень зависит от уровня db, поэтому при разработке api уровня должен выполняться контейнер-докер для уровня db. Можно использовать для этого также.

При разработке фронтального уровня это зависит как от db, так и от api tiers. Лучше всего использовать универсальное решение во время разработки, которое позволяет всем контейнерам вставать в их последнем состоянии изображения докеров и игнорировать те, которые неактуальны для текущих целей.

Например,

При разработке передней части, доведите все 3 контейнера из последних изображений. Игнорируйте контейнер переднего конца и, как обычно, используйте среду разработки вашего интерфейса. Укажите среду разработки переднего плана в контейнер api. Надеюсь, это имеет смысл.

Игнорирование контейнеров, которые не имеют отношения к разработке уровня, на котором вы работаете, означает, что вы можете использовать общий подход при разгрузке контейнеров докеров для всех уровней без конкретного решения для каждого из них.

Надеюсь, это имеет смысл, а не самое простое объяснение!

+0

Спасибо, но на самом деле это не объясняет, как вы его выложили. у вас есть один файл компоновки, который загружает их все? использовать локальное обнаружение службы? Более подробная информация была бы полезной. –

+0

добавлено больше информации для ответа – danday74

Смежные вопросы