Dmitrii
Рад за вас )
Denis
Если делаешь это постоянно, вопрос занимает минуты :)
Dmitrii
Может в чате есть уже кто-то, кто родился с CI/CD в заднице?)
Roman
Может в чате есть уже кто-то, кто родился с CI/CD в заднице?)
ну у нас ребята митапы мутили по этой теме https://www.youtube.com/watch?v=CULPAN5kQuU&list=PLI-dLr3jrAaFgYHl1RM1wRoMUU7rHcQwC&index=2
Roman
@rkononov тут обитает
Anonymous
ну у нас ребята митапы мутили по этой теме https://www.youtube.com/watch?v=CULPAN5kQuU&list=PLI-dLr3jrAaFgYHl1RM1wRoMUU7rHcQwC&index=2
Боюсь открывать видео про людей, рожденных с чем-то непрерывным в заднице.
Köfte
Не представлю как за неделю можно прод перевести на докер
докер готовился 2 месяца. nginx->gunicorn->python еще всякие redis rabbitmq, из бд постгрес и тарантул, стейджинги уже все оттестированы, выкатываю контейнеры и глушу супервизор.
Dmitrii
Воо, история начинает быть более правдивой )
Dmitrii
Всего лишь 2 месяца ебатни с докером и ... PROFIT!
Köfte
Вот сюрприз кого-то ждет :)
архитектор не против) остальным сам расскажет, если кто еще не в курсе
Köfte
Как вы деплоите код?
обновляем исходники и docker-compose kill -s HUP
Dmitrii
обновляем исходники и docker-compose kill -s HUP
Т.е. активные соединения будут проебаны?
Köfte
HUP сигнал старые не обрывает, новые подтягивают изменения
Dmitrii
Т.е. по итоге деплой получается полностью прозрачный и если запустить siege то не будет ни одной 500 на балансере?
Köfte
Т.е. по итоге деплой получается полностью прозрачный и если запустить siege то не будет ни одной 500 на балансере?
да, то есть например гуникорн получил хуп сигнал и 32 воркера просто дорабатывают все соединения, а новые уже с новыми воркерами работают. Но я все же думаю перед kill -s HUP сначала бекап поднять, а в случае 500 ошибки nginx переключится на бекап
Aleksey
А тут есть кто пользуется pycharm в связке с докером ? в режиме remote interpreter? чо то оно у меня падает. я такой один ?
Aleksey
у тя форточка ?
Alexander
OS X
Aleksey
куда бы копать
Aleksey
у меня хочет какую то переменную
Aleksey
так вот https://youtrack.jetbrains.com/issue/PY-20270#viewimage=%25D0%2592%25D1%258B%25D0%25B4%25D0%25B5%25D0%25BB%25D0%25B5%25D0%25BD%25D0%25B8%25D0%25B5_001.png%3Ffile=74-332522&c=true&rw=1253&rh=772&u=1469983655346
Köfte
И на скольки тачках все эти 32 воркера? На одной?
10 тачек, на каждой 32 воркера, 8 гигов оперативы на каждой достаточно. есть конечно утечка, но это проблему решили тем, что каждые 4 часа HUP сигнал кидаем
Alexander
я знаю, что compose они там как-то криво поддерживают
Alexander
у меня раньше не получалось его запустить
Alexander
попробуй без него
Aleksey
Без него также
Aleksey
Типа инкомплит сетуп
Alexander
просто докер без compose такая же ошибка будет?
Aleksey
ага
Köfte
Так а код получается пулите из репо или вкомпиливаете в имидж докера?
код в отдельном контейнере. он и обновляется, а остальные контейнеры используют volumes-from=container:source
Alexander
попробуй поставить Docker for Windows
Alexander
https://docs.docker.com/docker-for-windows/
Köfte
docker-compose -f source.yml up
Alexander
это рекомендуемый способ сейчас
Dmitrii
docker-compose -f source.yml up
Ну т.е. оно его тупо с гита пулить?
Dmitrii
Я то вот думаю как сделать схему, когда я в реджистри буду пихать контейнер с кодом уже. И версией.
Köfte
я вот тоже думаю
Aleksey
нее у меня линукс
Alexander
на маке я использую Docker for Mac и потом в отдельном окне терминала запускаю socat TCP-LISTEN:8099,reuseaddr,fork UNIX-CONNECT:/var/run/docker.sock
Dmitrii
ИМХО это более прямая схема
Dmitrii
И в ней роллбек будет без костылей
Aleksey
такое ощущение что поломалась связка именно в довер 1.12
Alexander
и подключаюсь к tcp://127.0.0.1:8099
Köfte
Я то вот думаю как сделать схему, когда я в реджистри буду пихать контейнер с кодом уже. И версией.
основную схему он не ломает, просто тестмровщикам нужен гит) они там мержат потом руками в контейнере
Aleksey
а зчем так не просто ?
Dmitrii
Пока основная претензия у меня как переключаться между контейнерами одной версии на дргую, без потери коннектов
Alexander
а там не получается иначе подружить с Docker for Mac
Alexander
(и пришлось бы через Virtualbox)
Aleksey
можно же просто в старте указать -H 127.0.0.1:2376
Aleksey
может там дебаг какой есть ?
Alexander
я просто этот способ нашёл на их трекере
Köfte
Пока основная претензия у меня как переключаться между контейнерами одной версии на дргую, без потери коннектов
так версию спокойно переключаем, гуникорн подцепил все в память, выкатил новый контейнер, отправил HUP сигнал
Alexander
возможно, есть и лучше варианты, да
Köfte
он уже с обновленного контейнера цепанул исходники
Alexander
мне особо без разницы - всё равно комп не выключаю, оно у меня просто фоном висит и всё
Dmitrii
он уже с обновленного контейнера цепанул исходники
Так ты щас описываешь схему когда у тебя все равно контейнер с исходником. А я про кейс когда в контейнере исходники и fpm например.
Dmitrii
Типа такой пак с приложением.
Köfte
Не совсем понял зачем им гит.
git merge origin/new_branch типа чтобы стейджинг новый не дергать, мерджат в контейнере
Köfte
поднимаешь бекап, потом обновляешь основу и бекап выключаешь
Köfte
Может просто так и делать?
ему еще важен gracefull reload
Evgeny
Долгие соединения?
Dmitrii
При высоком трафике будут 500 если об этом не думать
Evgeny
Долгие соединения или почему?
Dmitrii
Обычные такие соединения
Dmitrii
Ну вот деплоишь ты, и если не грейсфул то будет 20-30 фаталов. Одни могут быть в апи, другие на сайте
Dmitrii
Все это портит User Experience.
Evgeny
Не. Тебе просто надо все новые соединения кидать на новые инстансы. Подождать пока не перестанут работать старые контейнеры и снести из
Evgeny
И чуть сложнее бывает на длинных коннектах
Dmitrii
Так то да. Но просто щас вообще супер простая и тупая схема с симлинками и директориями
Evgeny
А. Так это ж вообще не докервей