2016-09-30 5 views
0

Я пытаюсь решить некоторые из моего вопроса относительно архитектуры системы, состоящей из следующих:Dockerize стек: Mapserver - AngularJs веб-приложение - Lumen API - PostgreSQL

  • AngularJS веб-приложений интерфейс
  • картсервер генерирующие & обслуживающие изображения карты с помощью WMS
  • Lumen REST API бэкенд, содержащий всю бизнес-логику
  • базы данных PostgreSQL с PostGIS для хранения пространственных данных

Каков надлежащий способ закрепления такого стека?

В настоящее время я имею в виду следующие контейнеры, которые будут созданы:

  1. Веб-сервер, содержащий:

    • веб-сервер Apache
    • AngularJS интерфейс приложения
  2. Карта сервера, содержащая:

    • веб-сервер Apache с поддержкой CGI
    • картсервер приложение CGI
    • MapCache/TileCache
  3. Применение контейнера Сервер:

    • веб-сервер Apache
    • Lumen API бэкенд
  4. База данных, содержащая:

    • PostgreSQL реляционная база данных
    • PostGIS надстройка

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

ответ

0

Давайте подумаем о философии докера, Microservices.

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

Смысл мы должны разделить нашу систему на микросервисы и поместить каждый микросервис в контейнер. Это значительно поможет вам при обновлении приложения.

В вашем случае я бы отделил apache от углового контейнера js.