Sergey
да
Denis
Может ты делаешь что-то неправильно?
Andrew
да даже если и так, то как это связано с использованием или не использованием :latest
Sergey
каждый сервис в отдельном контейнере, или концепция докера изменилась с последнего моего прочтения руководство по онному?
Denis
Но судя по тому что ты написал у тебя 13 сервисов в одном гите. Зачем?
Sergey
а как?
Andrew
да пофиг, используется то :latest не при сборке, а при запуске
Andrew
и вот там его использовать и не стоит
Denis
Если у тебя микросервисная архитектура, логичнее каждый микросервис вести отдельно
Sergey
нет, не микросервисная - микросервисы вообще нарушают концепцию докера
Denis
Andrew почему бы и нет?
Andrew
"концепция докера", хехе
Sergey
заказчик просто хочет
Andrew
Andrew почему бы и нет?
потому что все версии запущенные версии должны быть всегда известны, а не зависеть от времени года
Denis
Да даже если не микросервисная держать софт который разбивается на 13 отдельных контейнеров в одном гите неудобно
Denis
Это порождает целый класс проблем связанных с непрерывной интеграцией
Sergey
но держать 13 реп под это, извините меня, дерьмо - тоже как-то не очень
Denis
Andrew, никто не говорить их выкатывать на прод как latest. А тегать во время сборки, почему бы и нет.
Sergey
Sergey
как вести отсчёт?
Denis
Через jenkins например
Denis
Держать 13 реп под это дело как раз удобно 😊
Sergey
ну через него, радимого и собираю и доставляю и разворачиваю
Andrew
Denis
А если коммит в одну репу требует изменения остальных 12, то тогда может незачем их разбивать на отдельные контейнеры?
Denis
Andrew, использовать можно например на локальной машинке, чтобы не лазить каждый раз и не смотреть какая сейчас свежая версия. Предварительно конечно сделать pull.
Sergey
вот собственно и вопрос - как не тегая latest узнать какая сейчас последняя
Sergey
в автоматическом режиме, без участия человека
Denis
используя средства автоматической сборки
Sergey
оно же всё такое API-шное, но что-то банальных вещей нет
Denis
например в случае Teamcity использовать сборку как artefact depence для деплой конфигурации
Denis
*artifact
Denis
думаю в jenkins должен быть аналог
Sergey
банально хоть в файл записывай и потом вычитывай
Sergey
единственный минус - при переезде CI - надо восстановить этот файл
Denis
В любом случае, правильно Андрей говорит. Ты всегда должен катить на прод известную версию, а не то что было latest в определенное время года.
Sergey
отлично, с этим определились )))))
Sergey
осталось понять как узнать эту последнюю версию для каждого конкретного образа )))))
Denis
Через артифакты
Maksim
при сборке делай дополнительный тэг app-latest, app2-latest, app3-latest
Denis
А разница?
Denis
Разговор о том что ты зайдешь на прод и там будет бла-бла:latest
Denis
И ты не будешь знать из какого коммита оно собрано
Denis
Так как этот latest может в любой момент перетереться след сборкой
Sergey
еще же захочется иногда откатиться на предыдущую сборку )))
Sergey
а она уже не latest и тут наступает полный ступор )))
Andrew
не полный ступор, а деплой должен знать какую версию он хочет задеплоить
Andrew
конкретную, а не latest
Andrew
как у вас там деплой настроен — это другой вопрос
Sergey
хочу 2 отдельных джобы:
- одна взять из регистри последнюю версию и задеплоить ее
- взять предыдущую версию и задеплоить ее
Sergey
вот мне интересно - правда, что у 460 человек не возникало такой задачи? Неужели вы вводите каждый раз версию, которую вам надо собрать?
Andrew
вам уже сказали как делать можно
Andrew
и как делают
Andrew
у меня каждый имедж тегается и пушается гит_коммитом текущим
Andrew
он уже уходит в консул-ключ
Andrew
откуда его уже подцепляет "система диплоя" и собственно диплоит
Andrew
в этот же консул ключ можно засунуть любой git sha
Sergey
Andrew
прям весь, о ужас )
Andrew
можно 8 символов первые брать, если так бугают 32 символа (или сколько там) :)
Vasilii
Всем привет
случайно никто не поднмал samba-ad-dc от pitkley/samba-ad-dc?
Denis
Нет, но просто samba-ad-dc поднимали
Vasilii
Я и руками поднмал, потом решил в контейнере поднять
у меня всегда ругается на
../source4/dsdb/dns/dns_update.c:294: Failed DNS update - NT_STATUS_ACCESS_DENIED
Oleg
Всем привет! а кто какой процесс-супервайзер в контейнере использует? например если я хочу запустить в контейнере условный cron, я хотел бы сделать это из под какого менеджера, пока смотрю в сторону s6, supervisord или my_init (https://blog.phusion.nl/2015/01/20/docker-and-the-pid-1-zombie-reaping-problem/, https://blog.tutum.co/2014/12/02/docker-and-s6-my-new-favorite-process-supervisor/)
Andrew
my_init это не супервайзер процессов
Andrew
это такой баш-скриптик который умеет init 1 быть нормально
Andrew
phusion в качестве супервизора предлагает runit использовать (и собственно он есть в их имаджах)
Oleg
это не столь важно в контексте моего вопроса, но за уточнее спасибо)
Andrew
ну вроде как в контексте "какой супервайзер выбрать: А, Б или Ц" уточнее, что Ц это не супервайзер, а вот Д — супервайзер вполне себе важно :)
Oleg
ну если быть точным то my_init – это супервазер процессов, и написан он на питоне, а не на баше, поэтому все вроде ок
Oleg
по функционалу он конечно не дотягивает до supervisord но это не мешает ему управлять поведением некоторых процессов
Andrew
баш / питон, ок )
Andrew
каким поведением он как позволяет управлять?
Oleg
исходя из кода https://github.com/phusion/baseimage-docker/blob/rel-0.9.16/image/bin/my_init он как минимум умеет запускать и завершать процессы. Причем он умеет запускать загрузочные скрипты из init.id и rc.local
Andrew
он умеет быть правильным init
Andrew
сравнивать это с супервизорами типа runit / systemd / supervisord — некорректно
Andrew
хотя...
Andrew
почему бы и нет )
Andrew
в целом запустить что нужно оно вполне может, для контейнера этого может оказаться вполне достаточно