2017-02-02 3 views
3

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

Допустим, у меня есть проект X, который состоит из двух основных приложений: Store и Application Management. Они являются совершенно разными приложениями, но являются частью одного и того же проекта. У них есть свои собственные сервисы, исходный код, репозиторий и инфраструктура.

магазин [MySQL, MongoDB, elasticsearch, Nginx, PHP, исходный код приложения код] PMA [MySQL, Nginx, PHP, исходный код приложения код]

Поскольку они являются два различными хранилищами и имеют свой собственный Докер-Compose файл, как я могу запустить все с помощью одной команды?

Должен ли я создать репозиторий докеров, который расширяет как докер-состав, так и запускает все за один раз?

ответ

0
  • Изолировать вещи как можно больше, так что если вам нужен MySQL и MongoDB разделить их, и сделать контейнеры как можно, только библиотеки и исполняемые файлы, они должны (так называемый microcontainers). Для этого вы также можете создавать свои изображения с использованием alpine linux.
  • Для контейнеров базы данных используются тома для хранения данных на хосте вместо контейнера, работает быстрее. Вы также можете хранить файлы конфигурации в томе, поэтому вам не нужно обращаться к контейнеру каждый раз, когда вы хотите изменить конфигурацию.
  • Используйте Dockefiles и вместо того, чтобы создавать изображения вручную, это делает изображениями реплиминируемыми на любом хосте, и вы можете сохранить их в git.
  • Используйте докеры для сборки и запуска всех контейнеров одновременно.
0

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

Создайте git-хранилище ваших Dockerfiles. Это делает системы обновления намного проще в будущем. Моя структура обычно

/Dockerfiles 
    /Project 
     Dockerfile 
     (required files) 
     docker-compose.yml 

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

  1. Создание роя кластера (1 или более хостов)
  2. создать две наложенные сети (названный магазин и РМА, если вам нравится)
  3. Создать общую точку хранения NFS для установки на хозяев в/докер , Точка монтирования должна быть прочитана, записана и выполнена для группы докеров. Это будет использоваться для постоянного хранения в кластере elasticsearch.
  4. Создайте службы в сети магазина для php-fpm (для запуска исходного кода), NGINX для прокси-сервера и для поиска эластичного изображения.Они могут относиться друг к другу по сети с перекрытиями по имени
  5. Создание услуг на PMA сети для PHP-FPM, Nginx (прокси)

Вы также можете просто создать APACHE изображения/PHP. Это то, что мы делаем для beadockstar/laravel.

Помните о хранении в системах PHP. Если вам когда-нибудь понадобится загрузить что-то , а не, которое будет отвлечено на CDN, вам нужно убедиться, что каталог, в который загружаются файлы, сохраняется в каталоге хоста/докеров (или любом другом едином хосте каталог на всех роевых хозяевах)

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