Laradock: отдельная среда для каждого проекта или отдельная среда для нескольких проектов? - PullRequest
2 голосов
/ 21 мая 2019

Laradock предлагает два варианта: (1) отдельная среда Docker для каждого проекта и (2) единая среда Docker для всех ваших проектов.

В чем разница между двумя настройками?Какая настройка будет рекомендована, если у меня есть два проекта, которые я собираюсь развернуть на одной капле (Digitalocean), каждый из которых использует отдельное доменное имя?

1 Ответ

1 голос
/ 21 мая 2019

Представьте, что у вас есть 2 проекта: проект A и проект B.

В варианте (1) вы создаете среду докера для проекта A и другую среду докера для проекта B. Это означает, что база данных MySQLдля проекта A будет в другом контейнере, чем база данных MySQL для проекта B. Я лично предпочитаю этот подход, потому что:

  • это гарантирует вам, что каждый проект изолирован и можетимеют разные зависимости .Если вам нужно обновить версию MySQL для проекта A, вы можете легко это сделать без необходимости также обновлять проект B.

  • нет возможности нежелательного взаимодействия между двумя проектами.Проект A не может видеть данные проекта B, нет возможных неправильных настроек, которые приводят к неправильному взаимодействию между проектами.

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

Опция (2) в основном противоположна.Вы создаете только один контейнер для каждого сервиса, и два проекта используют одни и те же контейнеры.У вас будет один контейнер MySQL с 2 разными базами данных: одна используется проектом A, а другая - проектом B. Основным преимуществом этого подхода является возможность одновременного запуска проектов с минимальнымусилия.

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

Как правило, я бы использовал option (2) в случае, если два проекта сильно зависят друг от друга и будут разработаны совместно, а вариант (1) - во всех других ситуациях.

...