2016-10-06 9 views
0

Я не уверен, как правильно распределять службы на моем сервере с помощью докеров. У меня есть приложение, написанное в NodeJS и два приложения, написанные на PHP. Я использую NGINX как веб-сервер/обратный прокси и MySQL в качестве моей базы данных. Я не совсем уверен, какой контейнер-докер должен обрабатывать эту задачу и где хранить файлы приложений (js, php, статический контент, например css и jpg).Разделение службы докеров


У меня есть следующие варианты (омминг контейнера MySQL). Каждый прямоугольник представляет собой изображение докеров (кроме прямоугольника «Сервер» и «Сервер FS»).

Вариант 1: Один контейнер NGINX обрабатывает статический контент и передает запросы на PHP-FPM и NodeJS. Файлы приложений монтируются в изображения докеров.

Option 1

Вариант 2: Один NGINX контейнер, действующий в качестве обратного прокси-сервера, что пучки различных услуг. Сами приложения более переносимы, поскольку каждое приложение обрабатывает свою собственную конфигурацию (например, переписывание маршрута и обработка статического содержимого).

Option 2

Вариант 3: Один NGINX контейнер, действующий в качестве обратного прокси-сервера, как в варианте 2. Для каждого приложения PHP веб-сервер NGINX и PHP-FPM модуль содержатся в одном DOCKER изображения.

Option 3

Вариант 4: Один NGINX контейнер действует снова, как обратный прокси-сервер. Файлы приложений встраиваются в соответствующие изображения докеров.

enter image description here


Есть ли лучшая практика, как отделить службы в докеров изображения? Вариант 4, по-видимому, самый портативный и простой в развертывании, поскольку файлы приложений содержатся в изображении. Варианты с 1 по 3 проще в использовании, поскольку изображения не нужно перестраивать каждый раз, когда файлы меняются. Вариант 3, по-видимому, лучший вариант для меня, но я также знаю, что один контейнер докеров должен содержать только одну услугу (либо PHP-FPM , либо NGINX).

Есть ли передовая практика, или это решение каждого человека, как он/она хочет справиться с этим. Я хотел бы узнать о вашем опыте.

+0

Многие хорошие вопросы порождают определенное мнение, основанное на опыте экспертов, но ответы на этот вопрос будут, как правило, почти полностью основаны на мнениях, а не на фактах, ссылках или конкретном опыте. * Это повод закрыть вопрос о переполнении стека *. Я бы посоветовал вам найти форум по развитию (возможно, [Quora] (http://www.quora.com/Computer-Programming)?), Чтобы разобраться в общих чертах.Затем, когда/если у вас есть особые проблемы с кодированием, вернитесь в StackOverflow, и мы будем рады помочь. –

+0

@JayBlanchard Я не согласен. Этот вопрос действительно хорошо сформулирован с четкими диаграммами. Я уверен, что это будет полезно для людей, ищущих SO. Большинство вопросов в SO уже относятся к типу «как лучше всего это сделать». Ответы обычно основаны на опыте. – Alkaline

+0

«Каков наилучший способ сделать это?» вопросы уже давно обсуждались в Stack Overflow. Разумеется, у таких вопросов есть ответы, которые основаны на мнениях, и это определенная прямая причина здесь в Stack @Alkaline. Большинство вопросов о Stack гораздо более конкретны и рассматривают проблемы с кодированием, а не как практические. –

ответ

0

Если вы стремитесь к производственной системе, я хотел бы предложить Диаграмма 1.

Это позволит вам масштабировать свои услуги (nodejs, PHP-FPM) по горизонтали и может обеспечить некоторое восстановление после отказа. Это также способ, которым он будет архивироваться с помощью менеджера кластера, такого как Swarm или Kubernetes. В вашем сценарии не должно быть больше одного nginx для каждого хоста.