Aleksey
ок, как решают задачи которые должны выполняться по расписанию?
от крона же зависит, если это например надор тасок, связанных с базой, то удобно в дженкинсе это хоязйство держать (мы просто не держим БД в докере)
yopp
как это зачем, деплоить по расписанию например
отдельный контейнер с кроном это плохая идея
An7on
плохая, но лучше чем крон на хосте)
An7on
можно это залить пачкой куда-нибудь и будет там также
Vitalii
ну вообще варианты есть когда делают не крон задачи, а демон задачи котоыре сами в себе крон делают. Типа каждую сукунду срабатывает вечный цикл и там проверяется раписание. Эти все процессы в супервизор и агонь.
Vitalii
Супервизор в отдельном контейнере лежит.
yopp
контейнер не должен ничего знать об окружении
yopp
иначе вы себе из докера пиздец делаете
Vitalii
но все же это надо закладывать сразу. А что если есть уже система заточеная под крон (расписанием стороняя программа занимается)?
yopp
если вам нужны какие-то фоновые задачи, сделайте свой шедулер на уровне приложения и точку входа в шедулер поставьте в entrypoint
yopp
если вы свою бизнес-логику начинаете вытаскивать куда-то наружу — вы огребёте тухлой треской по еблу
Vitalii
если вам нужны какие-то фоновые задачи, сделайте свой шедулер на уровне приложения и точку входа в шедулер поставьте в entrypoint
ты много сказал что мы гавно придумали, но вариантов вменяемых пока нет. Хотелось бы услышать решения :)
Vladislav
Vladislav
чёт, alpine какой-то каличный, поставил gcc, пробую собрать простейший main.c, выдает ошибки линковки с crti.o
Vitalii
Мало того, контейнеры с шедулерами НЕ должны дублироваться.
Vitalii
причём тут докер-то?
всмысле? В контейнере все окружение и все зависимости.
Vitalii
Код длжен запускаться через контейнер. Откуда - вопрос.
yopp
докер не шедулер
Aleksey
да чего вы спорите - это просто не решенная пока что проблема :))
Vitalii
Нельзя просто так взять и задублировать кучу контейнеров внутри которых шедулер.
yopp
да чего вы спорите - это просто не решенная пока что проблема :))
я не понимаю почему докер должен решать вообше эту проблему
yopp
Нельзя просто так взять и задублировать кучу контейнеров внутри которых шедулер.
потому что это не проблема докера, а проблема твоего приложения
Aleksey
я не понимаю почему докер должен решать вообше эту проблему
я же написал из всех зол выбрал дженкинс :)
yopp
Это задача твоего приложения уметь определять условия в которых что-то не может запуститься
yopp
И как конкретно ты будешь это делать — к докеру вообще никакого отношения не имеет
yopp
Потому что это уровень приложения
Vitalii
я не понимаю почему докер должен решать вообше эту проблему
он не должен, но он здесь прямо завязан. Взять самое популярное php приложение. PHP и все его кишки настроены в контейнере и у тебя два варианта: 1. Наследоваться от имаджа с пхп для твоего проекта и в него шедулер процессов 2. Как я описал... через докер (кружение) только пуск задач, а сам шедулер за контйнером
Vladimir
чёт, alpine какой-то каличный, поставил gcc, пробую собрать простейший main.c, выдает ошибки линковки с crti.o
я недвано кидал неплохой дебиан-бейзд https://hub.docker.com/r/tklx/base/ вообще оч люблю виртуалки от этих ребят. Но и контейнер вроде ничо
Vladimir
Я буквально на днях собирал в алпине мезос из сырцов - норм всё собирается. Хз чо за проблемы с простейшим файлом у вас..
Vladislav
я недвано кидал неплохой дебиан-бейзд https://hub.docker.com/r/tklx/base/ вообще оч люблю виртуалки от этих ребят. Но и контейнер вроде ничо
А как в дебьяне, поставить сборочные пакеты, а потом, после сборки их удалить одной строкой? Типа как это в alpine делается?
Vladislav
не хочу замусоривать конечный образ
Vladimir
один в один
Vladimir
на докер хабе масса примеров с убунтой
Vladislav
а если этот blablabla потянет сотню зависимостей, они тоже удалятся?
Aleksey
докер то тут причем
Sergei
это вот сделает autoremove
Aleksey
божешьмой
yopp
Вариант 2 это попытка натянуть слона на глобус
An7on
А если у меня 50 контейнеров, которые собирают статистику и кладут в свою базу (или обрабатывают на лету)
yopp
Потому что докер это не уровень приложения, это уровень инфраструктуры. Твоё приложение в иделе не должно знать про докер ровным счётом нихуя.
Vitalii
Да, ты наследуешь и делаешь свой шедулер
а почему свой? Уже готовые есть - cron и его аналоги
An7on
почему бы ими всеми через отдельный контейнер с кроном не управлять?
Vladislav
По поводу шедулеров, считаю, что если шедулинг какой-то задачи является неотъемлемой частью сервиса, то надо пихать крон внутрь и не морочить голову и запускать всё через supervisor
yopp
....
yopp
пипец
yopp
An7on
почему не собачье дело?
An7on
я это залью на другой серв и там всё будет работать также
yopp
почему не собачье дело?
потому что это не докеру надо что-то шедулить, а приложению
An7on
смысл в этом, не?
yopp
Нет?
yopp
Не в этом?
An7on
приложение не знает про другие сервисы
An7on
оно просто умеет брать данные и делать дела с ними
yopp
Любая попытка завязать сервис внутри докера на сам докер — провальна.
yopp
И это явный признак того, что вы контейнеры неправильно готовите.
An7on
не на сам докер, а на управление другими докер контейнерами
Aleksey
@dd_bb увы
yopp
@dd_bb увы
пипец ваще!
yopp
я в шоке
Aleksey
я так то соглсен что приложение ничего не должно знать о совем окружении
Aleksey
перемнные окружения прочитала и в днс сходило
Aleksey
и пошло работать
yopp
да, именно
Aleksey
однако это не совсем так давай по правде
yopp
почему не совсем так?
Aleksey
потому что возможны варианты когда приложение приходится затачивать под докер
An7on
да, важное уточнение, я не дергаю docker exec из контейнера, я дергаю метод запуска через http (которые единый у всех сервисов со статой)
Aleksey
например просто взять и запилить приложение которое бы нормально жрало конфиг не только из переменных окружения уже задачка