LINUX.ORG.RU

Multiple Deploy to Staging

 ,


0

1

Добрый день колеги.

Есть команда программистов у которых есть production и staging сервер. На нём крутится веб-приложение. Проблема заключается в том их количество растёт, а staging они могут использовать только по очереди. Сначало кто то в общем чате спрашивает если staging свободный, при получении положительного ответа деплоит на него свои изменения. Из за такого подхода иногда члены команды задерживают друг друга. На локалхосте такое не поднять из за того что используются огромные БД.

Меня попросили помочь им.
Было принято решение использовать docker + virtual host через nginx который работал бы на различных портах.

На данный момент в голове крутятся пару идей, но они слегка костыльные и грязные.
Так же нужно учесть способ удаления неиспользуемых Docker контейнеров, т.к. там есть личности в стиле «ААааа... у нас нету места.... Помогиии!!!». Нужно сделать так чтобы они потом меня не беспокоили, уровень познания линукса там разный. Буду рад если кто то подскажет направление в котором можно двигаться.

P.s. Колебался перед выбором раздела между Development и Admin.

★★★★★

Ну с общей БД теперь заживём.

melkor217 ★★★★★ ()
Ответ на: комментарий от melkor217

Эту мысль вы сами развили. В топике такое не указанно.

snaf ★★★★★ ()
Последнее исправление: snaf (всего исправлений: 1)
Ответ на: комментарий от snaf

Ну выдели несколько серверов тогда, чего костыли городить.

melkor217 ★★★★★ ()

Дык им что нужно, каждому:
- nginx
- php/ruby/python/...
- ftp/sftp/...
бд общая, что ещё?

Yustas ★★★ ()
Ответ на: комментарий от Yustas

сам стэк технологий просто трэш.

  • nginx
  • ruby on rails
  • ssh ( рут не нужен )
  • MongoDB
  • Elastic Search
  • PostgreSQL

бд общая

Раздельная.

snaf ★★★★★ ()
Ответ на: комментарий от melkor217

Ну выдели несколько серверов тогда, чего костыли городить.

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

snaf ★★★★★ ()
Последнее исправление: snaf (всего исправлений: 1)
Ответ на: комментарий от snaf

Можно деплоить через docker-compose например. В качестве идентификатора проекта compose для деплоя использовать имя бранча.

Все проекты с сомнительными именами (временные бранчи) убивать по расписанию, чтобы не плодили лишнего.

Чистка мусора докера - периодически удалять незапущенные контейнеры и образы.

melkor217 ★★★★★ ()

Вытащить тестовые данные, и при деплое создавать БД и загружать туда данные
Ну типо docker-composer up, а уже в YAML-е укажи образ с базой
Илл поднять какую-нибудь общую базу, куда будут срать разработчики?

mystery ★★ ()
Ответ на: комментарий от snaf

Не знаю как у вас, но как я знаю, разработчики ничего не деплоят
Это задача других людей

mystery ★★ ()
Ответ на: комментарий от mystery

Разрабатывать проект без возможности запустить свой код - вот это норм идея.

melkor217 ★★★★★ ()
Ответ на: комментарий от melkor217

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

mystery ★★ ()
Ответ на: комментарий от mystery

По условию задачи код нельзя запускать на локальной машине. Не такая уж и редкая ситуация - не каждый проект запустится на макбуке. Даже с фикстурными данными.

melkor217 ★★★★★ ()
Ответ на: комментарий от snaf

SSH только для манипуляций с файлами или настройки демонов/систему тоже ковырять?
В первом случае - всё просто: по контейнеру на каждый демон, собирать всё это через docker-compose.
Насчёт создания/удаления, я бы прикрутил к ансибл-скриптам веб-морду с тремя кнопками.

Yustas ★★★ ()
Ответ на: комментарий от mystery

простите, но я не понял что вы этим хотели сказать.

snaf ★★★★★ ()
Ответ на: комментарий от Yustas

SSH только для манипуляций с файлами или настройки демонов/систему тоже ковырять?

логи глянуть, запустить шел, перезагрузить приложение.

Насчёт создания/удаления, я бы прикрутил к ансибл-скриптам веб-морду с тремя кнопками.

хм... можно попробовать...

snaf ★★★★★ ()
Ответ на: комментарий от snaf

логи глянуть

Да, через вольюмы подключить /var/log/app со всех контейнеров к sshd

запустить шел

Это уже надо отдельно в каждый контейнер ходить. Либо - ssh на хост дальше через алиасы

app reload -> docker exec -it app /opt/bin/shell

перезагрузить приложение.

app reload -> docker exec -i app /opt/bin/reload
Yustas ★★★ ()
Ответ на: комментарий от melkor217

Тогда сервер докер контейнеров
Какой-нибудь OpenShift Origin

mystery ★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.