Ответ 1
Это зависит от нескольких факторов. Вот несколько вопросов, которые помогут вам решить.
-
Являются ли приложения с 5-6 очень похожими (то есть, в терминах Docker, вы можете основывать их на общем изображении), и вы думаете о развертывании большего количества из них и/или переносе некоторых из них на другие серверы?
-
ДА: тогда имеет смысл встраивать сервер MySQL в каждое приложение, потому что оно будет "придерживаться" с помощью приложения с минимальным усилием настройки.
-
НЕТ: тогда нет веских причин для внедрения сервера MySQL.
-
-
Вы хотите иметь возможность масштабировать эти приложения (например, запросы баланса нагрузки для одного приложения в нескольких контейнерах) или масштабировать сервер MySQL (например, реплицированную настройку ведущего/ведомого)?
-
ДА: тогда вы не можете встроить сервер MySQL, иначе масштабирование одного уровня будет масштабировать другой уровень, что приведет к головным болям.
-
НЕТ: ничто не мешает вам встраивать сервер MySQL.
-
-
Как вы думаете, будет ли значительная загрузка базы данных хотя бы одним из этих приложений?
-
ДА: тогда вы можете использовать отдельные серверы MySQL, потому что одно приложение может помешать другим.
-
НЕТ: тогда вы можете использовать один сервер MySQL.
-
Встраивание сервера MySQL в норму, если вы хотите установить супер-простое развертывание, где вам не нужна масштабируемость, но вы хотите легко развернуть новые экземпляры, и вы хотите быть в состоянии для беспрепятственного перемещения экземпляров.
Самая гибкая настройка - это та, где вы развертываете один контейнер приложения + один контейнер MySQL для каждого приложения. Если вы хотите это сделать, я бы предложил дождаться Docker 0.7, который будет реализовывать ссылки, что позволит вам создать базовый механизм обнаружения сервисов, чтобы каждый контейнер приложения мог легко обнаружить хост/порт своего контейнера базы данных.
Я бы не размещал MySQL на хосте; если вы хотите установить одну MySQL, вы можете добиться того же результата, запустив один контейнер MySQL и запустив его с помощью -p 3306:3306
(он будет маршрутизировать хост 3306/tcp
в порт контейнера MySQL 3306/tcp
).