fr4nki
@fr4nki
web-developer

Docker на продакшене, как организовать работу нескольких проектов?

Привет!

У меня есть необходимость поддерживать 10 +- проектов на одном сервере под дебиан. Сейчас используется нгинкс/пхп/питон/мариядб, гитлаб и дженкинс для ci. Захотелось попробовать докер, но организацию пока не очень представляю, но предварительно так: один контейнер под нгинкс, один под дб, и пхп/питон-проекты - каждый в отдельном контейнере. Заводить отдельный контейнер с дб под каждый проект не хотелось бы.

Пока слабо представляю как это все подружить друг с другом, поэтому прошу помочь советом куда копать:
1. Как правильней и удобней организовать весь этот зоопарк с точки зрения удобства поддержки? Важный момент - бывает необходимо поднять еще какое-нибудь приложение и очень бы не хотелось, чтобы это занимало кучу времени.
2. В идеале хотелось бы иметь все тоже самое, но в контейнерах и с непрерывной интеграцией через гитлаб+дженкинс. Представляю как это должно работать в теории, но манов толковых не встречал.

Заранее всем спасибо. И прошу прощения, если вопросы достаточно очевидные.
  • Вопрос задан
  • 1604 просмотра
Пригласить эксперта
Ответы на вопрос 3
insiki
@insiki
broken pipe
Добавляете в CI этап сборки и поставки контейнера по хуку в репозиторий.
Ответ написан
@gaxetasok
Воспользоваться готовыми системами для управления всем этим хозяйством.
Flynn.io к примеру - цельная, несложная.
Если вам на одном сервере - то есть еще проще. Докку, например.
Ответ написан
nonlux
@nonlux
Дано
Хост для проектов.
БД контейнер одна штука. Хотя я бы взял на каждый проект отдельно. Так легче правами к базе рулить.
По образу на каждое окружение. (Пхп, питон). Обновление кода через гит. Обновление базы через миграции.
1. Запускаем jwilder/nginx-proxy на хосте чтобы по быстрому добавлять новые проекты с привязкой домена и ставим питон на хост.
2. Делаем docker-compose file в корне проекта для разворачивания инфроструктуры проекта. (Контейнеры с окружением и Никс)
3 пишем на ансибл сценарий обновления обновления проекта (гит пулл, запуск миграции, рестарт компос)
4 собираем контейнер с gitlab runner в котором установлен ансибл и добавлены ключи для хоста. Определяем для gitlab_ci для допустим мастер ветка после тестов запускает ансибл
5 Профит

Зачем дженкинс? Для него 4 пункт такой же.
П.с собирайте свои контейнеры на alpine и делайте docker squash
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы