@docker_ru

Страница 414 из 1375
Евгений
28.12.2017
06:16:46
Тут написано не делать так, а выше вы пишите это гуд, может определитесь?

Petr
28.12.2017
07:31:50
У меня есть веб-приложение (PHP), я научился запаковывать его в контейнер с php-fpm, дополнительно запскаю контейнер с nginx (описал docker-compose.yml) - всё отлично. Далее моему приложению требуется запуск по cron некоторых php скриптов (например, раз в день подгрузка курсов ЦБРФ). Вопрос: где описать запуск cron скриптов? Как это решается в мире Docker?

Google
Evgeniy
28.12.2017
09:05:51
У меня есть веб-приложение (PHP), я научился запаковывать его в контейнер с php-fpm, дополнительно запскаю контейнер с nginx (описал docker-compose.yml) - всё отлично. Далее моему приложению требуется запуск по cron некоторых php скриптов (например, раз в день подгрузка курсов ЦБРФ). Вопрос: где описать запуск cron скриптов? Как это решается в мире Docker?
Поддерживаю вопрос. Как лучше дергать сопутствующие задачи по коду. Есть довольно большой php код. Есть и кроны и нечто вроде сервисов, которые очереди слушают и дергают php код, и их ТУЧА. Как это лучше рулить? Дла каждого сервиса по контейнеру лепить и пробрасывать туда код? Если билдить контейнеры с кодом, то обрыза до терабайтов вырастут.

kiltum
28.12.2017
09:06:39
"Официально" ? what
Ну не официально. "Идеологические верно", "по правильному", "настоящие пацаны так делают" и теде и тепе

Evgeniy
28.12.2017
09:08:06
Ну не официально. "Идеологические верно", "по правильному", "настоящие пацаны так делают" и теде и тепе
Ну, не совсем идеологически верно, потому что крон будет дергать другие процессы. И лога по факту не будет в docker logs. По идее нужно пилить каждый сервис отдельно и дергать в отдельном контейнере

Evgeniy
28.12.2017
09:08:54
Evgeniy
28.12.2017
09:09:42
кого, его?
Ну, volume с кодом на 100500 контейнеров-сервисов

Евгений
28.12.2017
09:09:47
Ну, я тоже думал об этом. А как его пробросить в kubernetes ?
тут и думать не надо, нужно сильно много принять веществ, чтобы билдить образ с кодом

Google
Евгений
28.12.2017
09:10:16
Ну, volume с кодом на 100500 контейнеров-сервисов
https://kubernetes.io/docs/concepts/storage/volumes/ Не благодари

Aleksandr
28.12.2017
09:11:22
man mkdir ?
то есть ты предлагаешь с хоста пробрасывать?

по всем нодам?

Евгений
28.12.2017
09:12:04
то есть ты предлагаешь с хоста пробрасывать?
ну если ты место экономишь, попробуй nfs

по всем нодам?
ссылка на kubernetes volumes выше

Aleksandr
28.12.2017
09:13:08
ну если ты место экономишь, попробуй nfs
я не экономлю. мне кажется сбилдить образ и разлить его точно так же как другие приложения, удобнее, чем еще один уровень деплоя добавлять

ссылка на kubernetes volumes выше
моя не знать кубернетес

Aleksandr
28.12.2017
09:13:55
Евгений
28.12.2017
09:14:06
может один раз это и удобнее, только насколько дольше происходит деплой?

Aleksandr
28.12.2017
09:14:38
Евгений
28.12.2017
09:15:45
У вас есть рассово-верный образ без кода, разлитый на 100500 нод и одна (парочка для отказоустойчивости) сетевых шар (ажур дисков, чего угодно) с собранным/скомпиленным кодом вашей православной билд системой а-ля тимсити. Если вы хотите обновить образ - вам надо сделать только это, если только код - ну ты понял. Это логично и ПРОЩЕ, чем код в образе

а мне вашего не надо
так что очень голословно. По вашей же логике стоит собрать один образ, где внутри сразу mysql, php и nginx, а не три разных. У меня кровь чистая, я так не делаю. Идея микросервисов в разделении, а не наоборот

Евгений
28.12.2017
09:18:34
Так ты что предлагаешь я не понял. Я объяснил почему бред билдить образ с кодом внутри

Aleksandr
28.12.2017
09:20:35
например собрать приложение на nodejs/php/python и собрать с образ с кодом и интепретатором, и так дистрибьютить

Aleksandr
28.12.2017
09:23:43
одним контейнером?
одним образом

Google
Евгений
28.12.2017
09:24:03
одним образом
один образ = один контейнер, правильно?

Aleksandr
28.12.2017
09:24:18
один образ, N контейнеров

Евгений
28.12.2017
09:25:19
один образ, N контейнеров
господи, хорошо, допустим пользователи тоже наркоманы, они зачем-то запускают обычно не 1, а N контейнеров одного и того же приложения. Я не к этом веду

одним образом
если вы реально не понимаете, что обично для этого используется composer и механизм volumes, я задам наводящий вопрос

Евгений
28.12.2017
09:26:34
одним образом
Я ваш пользователь, хочу модицифизировать ваше приложение, вышла новая версия nodejs и я хочу её использовать, что мне придётся для этого делать?

Aleksandr
28.12.2017
09:26:37
если вы реально не понимаете, что обично для этого используется composer и механизм volumes, я задам наводящий вопрос
какой композер? что вы несете?) волюмы используют при разработке. дальше это пакуют в образ и деплоят на продакшн

Aleksandr
28.12.2017
09:27:04
Evgeniy
28.12.2017
09:27:31
если вы реально не понимаете, что обично для этого используется composer и механизм volumes, я задам наводящий вопрос
Ну, допустим, с volumes можно что-то придумать с кодом. Но а как сделать для десятка сервисов, которые дергают php код? Нужно билдить для каждого сервиса по контейнеру с cron, php-cli ?

Фёдор
28.12.2017
09:27:55
хотя бы один пример
Курс чувака на юдеми, который ведет конференции и является докер кептейном

Aleksandr
28.12.2017
09:28:06
хотя бы один пример
https://nodejs.org/en/docs/guides/nodejs-docker-webapp/

Dzmitry
28.12.2017
09:28:17
Я ваш пользователь, хочу модицифизировать ваше приложение, вышла новая версия nodejs и я хочу её использовать, что мне придётся для этого делать?
если вы мой пользователь - вы пользуете ту версию которую я поддерживаю и поставляю вместе с продуктом, все остальное - самодурство

Aleksandr
28.12.2017
09:28:27
ну и далее. просто открываете все ссылки по запросу deploy nodejs application docker

свой интерпретируемый язык подставить

Фёдор
28.12.2017
09:28:55
так и гуглить?
Docker Bret Fisher

Google
Фёдор
28.12.2017
09:29:41
Я хз, есть ли у него блог, но у него есть курс на udemy, в котором это четко обозначено

Aleksandr
28.12.2017
09:30:22
python https://medium.com/google-cloud/deploy-python-application-to-google-cloud-with-docker-and-kubernetes-db33ee9fbed3

php https://runnable.com/docker/php/dockerize-your-laravel-application

Dzmitry
28.12.2017
09:31:58
серьёзно? мы точно говорим про open source ?
а разница? если я поставляю продукт в контейнере то хоть опен хоть энтерпрайз, я гарантирую, а нет - собирайте с сырцов сами и разбирайтесь с багами тоже сами, и не строчите миллион тикетов что ведет себя както не так

Evgeniy
28.12.2017
09:32:28
php https://runnable.com/docker/php/dockerize-your-laravel-application
Ну, это все классно когда кода не так много. А если у меня папка с кодом только больше 1Гб, то я только образы буду билдить неделю

Admin
ERROR: S client not available

Евгений
28.12.2017
09:33:26
а разница? если я поставляю продукт в контейнере то хоть опен хоть энтерпрайз, я гарантирую, а нет - собирайте с сырцов сами и разбирайтесь с багами тоже сами, и не строчите миллион тикетов что ведет себя както не так
окей, я разработчик, я хочу перевести свою приложение на новую версию php, насколько это дольше и сложнее, нежели использую 3 разных контейнера вы осознаёте?

Евгений
28.12.2017
09:34:44
форк, разработка, пул реквест что тут сложного? )
3 софтины будут собираться в 3 раза дольше, не? Я хочу поменять только один компонент, почему я пересобираю всё?

Docker Bret Fisher
это его репо? https://github.com/BretFisher/node-docker-good-defaults Я тоже вижу заголовок NODE DOCKER ХОРОШИЕ ПРАКТИКИ и там используется COMPOSER с подлючаемым volume кода приложения /opt/app ????

А я понял, он предлагает делать так для дева и билдить образ для прода

Evgeniy
28.12.2017
09:40:01
это его репо? https://github.com/BretFisher/node-docker-good-defaults Я тоже вижу заголовок NODE DOCKER ХОРОШИЕ ПРАКТИКИ и там используется COMPOSER с подлючаемым volume кода приложения /opt/app ????
Ну, docker-compose не годится для продакшена. По поводу огромного кода - его придется делать и правда через volume. Иначе образы будут просто огромные. И на билд и пулл этих образов будет уходить неделя.

Evgeniy
28.12.2017
09:40:45
А я понял, он предлагает делать так для дева и билдить образ для прода
У меня был вопрос немного о другом? Как организовать работу с тучей мелких сервисов, которые дергают один и тот же код?

Евгений
28.12.2017
09:42:06
Если приложение не огромное и мы собираемся деплоить на прод, образ можно билдить сразу с кодом и это будет правильно, я согласен. Прощу прощения

например собрать приложение на nodejs/php/python и собрать с образ с кодом и интепретатором, и так дистрибьютить
однако пихать nodejs/php/python в один образ - не соглашусь, по ссылкам выше нигде такого нет

Petr
28.12.2017
09:47:37
Ну, допустим, с volumes можно что-то придумать с кодом. Но а как сделать для десятка сервисов, которые дергают php код? Нужно билдить для каждого сервиса по контейнеру с cron, php-cli ?
Я планировал билдить один контейнер в котором полюкчается volume с исходниками + php-cli + файл crontab (внутри моного файлов) + CMD ["cron"], что думаете рабочий вариант?

Google
Evgeniy
28.12.2017
09:49:56
Я планировал билдить один контейнер в котором полюкчается volume с исходниками + php-cli + файл crontab (внутри моного файлов) + CMD ["cron"], что думаете рабочий вариант?
Думаю, что нет. В идеале: один процесс = один контейнер. Т.е. контейнер - это просто ограниченный (cgroups,namespaces) процесс. И когда он падает, то контейнер должен падать. И уже кубер его сам должен перезапускать

Petr
28.12.2017
09:51:07
Думаю, что нет. В идеале: один процесс = один контейнер. Т.е. контейнер - это просто ограниченный (cgroups,namespaces) процесс. И когда он падает, то контейнер должен падать. И уже кубер его сам должен перезапускать
Я думал это будет долгоживующий контейнер, в котором тем самым процессом будет вечноработающий процесс cron, который время от времени будет дёргать php-cli в соответсвие с файлом crontab

Evgeniy
28.12.2017
09:52:18
Я думал это будет долгоживующий контейнер, в котором тем самым процессом будет вечноработающий процесс cron, который время от времени будет дёргать php-cli в соответсвие с файлом crontab
А как контролировать что cron вообще что-то дергает? Или то, что он дергает отрабатывает, а не валится с ошибкой? А если делать по одному процессу, то удобно потом же логи собирать в тот же ELK

Evgeniy
28.12.2017
09:55:53
преувеличиваете конечно.
В чем преувеличиваю?

Petr
28.12.2017
10:02:05
А как контролировать что cron вообще что-то дергает? Или то, что он дергает отрабатывает, а не валится с ошибкой? А если делать по одному процессу, то удобно потом же логи собирать в тот же ELK
действительно, контролировать как отработали мои php-cli скрипты никак (на самом деле мои php-cli скрипты сами пишут логи в файлы - в моём проекте я посмотреть эти log файлы в итоге смогу)

Petr
28.12.2017
10:30:27
Вот ещё вопросик: у меня PHP приложение сейчас работает чисто на хосте, без каких-либо docker контейнеров. Но это не просто php-исходники + php-fpm + nginx. Там ещё куча всякого вспомагательного софта типа imagemagic, ghostscript, wkhtmltopdf (это всё дёргается из php кода через exec()). Установка всего софта и настройка всех ini файлов сейчас делается с помощью ansible. Теперь я хочу перенести всю инфрастурактуру в контейнеры (пока вырисовывается два контейнера: php-fpm и nginx). Внимание вопрос: как бы вы сделали? Вариант А): Переписать все ansible таски на чистые команды RUN внутри Dockerfile (установка и настройка всех утилит типа imagemagic, ghostscript, wkhtmltopdf внутрь контейнера с приложением php-fpm); Вариант Б): переиспользовать уже имеющиеся ansible скрипты запустив RUN ["ansible-playbook", ... ] в Dockerfile? Зашквар ли вариант Б?

kiltum
28.12.2017
10:34:34
Б вполне себе, особенно поначалу. Есть только один нюанс - пересобирать образ юудет чуточку сложнее, потому что докер не будет видеть изменений

Но потом, постепенно мигрируегь на А и все, будешь как все

Evgeniy
28.12.2017
10:48:41
Вот ещё вопросик: у меня PHP приложение сейчас работает чисто на хосте, без каких-либо docker контейнеров. Но это не просто php-исходники + php-fpm + nginx. Там ещё куча всякого вспомагательного софта типа imagemagic, ghostscript, wkhtmltopdf (это всё дёргается из php кода через exec()). Установка всего софта и настройка всех ini файлов сейчас делается с помощью ansible. Теперь я хочу перенести всю инфрастурактуру в контейнеры (пока вырисовывается два контейнера: php-fpm и nginx). Внимание вопрос: как бы вы сделали? Вариант А): Переписать все ansible таски на чистые команды RUN внутри Dockerfile (установка и настройка всех утилит типа imagemagic, ghostscript, wkhtmltopdf внутрь контейнера с приложением php-fpm); Вариант Б): переиспользовать уже имеющиеся ansible скрипты запустив RUN ["ansible-playbook", ... ] в Dockerfile? Зашквар ли вариант Б?
конечно, вариант A. Там и кэширование нужных слоев имиджа будет, ну и понятно все будет описано.

Roman
28.12.2017
12:43:30
Всем привет. Есть приложение по которому раскиданы URL внешней машины и если мы переносим на другую машину, то везде меняем IP естетсвенно, вот как от этого избавиться?

Страница 414 из 1375