Docker на продакшене, как организовать работу нескольких проектов?
Привет!
У меня есть необходимость поддерживать 10 +- проектов на одном сервере под дебиан. Сейчас используется нгинкс/пхп/питон/мариядб, гитлаб и дженкинс для ci. Захотелось попробовать докер, но организацию пока не очень представляю, но предварительно так: один контейнер под нгинкс, один под дб, и пхп/питон-проекты - каждый в отдельном контейнере. Заводить отдельный контейнер с дб под каждый проект не хотелось бы.
Пока слабо представляю как это все подружить друг с другом, поэтому прошу помочь советом куда копать:
1. Как правильней и удобней организовать весь этот зоопарк с точки зрения удобства поддержки? Важный момент - бывает необходимо поднять еще какое-нибудь приложение и очень бы не хотелось, чтобы это занимало кучу времени.
2. В идеале хотелось бы иметь все тоже самое, но в контейнерах и с непрерывной интеграцией через гитлаб+дженкинс. Представляю как это должно работать в теории, но манов толковых не встречал.
Заранее всем спасибо. И прошу прощения, если вопросы достаточно очевидные.
- лучше по отдельному контейнеру бд на сайт
- docker-compose для каждого сайта и для проксирующего нгникса на фронте и связывание по сети
- докер волюмы мы например их еще "боимся" непонятно как их чинить в случае неведомой фигни
Воспользоваться готовыми системами для управления всем этим хозяйством.
Flynn.io к примеру - цельная, несложная.
Если вам на одном сервере - то есть еще проще. Докку, например.
Дано
Хост для проектов.
БД контейнер одна штука. Хотя я бы взял на каждый проект отдельно. Так легче правами к базе рулить.
По образу на каждое окружение. (Пхп, питон). Обновление кода через гит. Обновление базы через миграции.
1. Запускаем jwilder/nginx-proxy на хосте чтобы по быстрому добавлять новые проекты с привязкой домена и ставим питон на хост.
2. Делаем docker-compose file в корне проекта для разворачивания инфроструктуры проекта. (Контейнеры с окружением и Никс)
3 пишем на ансибл сценарий обновления обновления проекта (гит пулл, запуск миграции, рестарт компос)
4 собираем контейнер с gitlab runner в котором установлен ансибл и добавлены ключи для хоста. Определяем для gitlab_ci для допустим мастер ветка после тестов запускает ансибл
5 Профит
Зачем дженкинс? Для него 4 пункт такой же.
П.с собирайте свои контейнеры на alpine и делайте docker squash