Aleksandr
man mkdir ?
то есть ты предлагаешь с хоста пробрасывать?
Aleksandr
по всем нодам?
Evgenii
то есть ты предлагаешь с хоста пробрасывать?
ну если ты место экономишь, попробуй nfs
Evgenii
по всем нодам?
ссылка на kubernetes volumes выше
Aleksandr
ну если ты место экономишь, попробуй nfs
я не экономлю. мне кажется сбилдить образ и разлить его точно так же как другие приложения, удобнее, чем еще один уровень деплоя добавлять
Aleksandr
ссылка на kubernetes volumes выше
моя не знать кубернетес
Evgenii
может один раз это и удобнее, только насколько дольше происходит деплой?
Evgenii
У вас есть рассово-верный образ без кода, разлитый на 100500 нод и одна (парочка для отказоустойчивости) сетевых шар (ажур дисков, чего угодно) с собранным/скомпиленным кодом вашей православной билд системой а-ля тимсити. Если вы хотите обновить образ - вам надо сделать только это, если только код - ну ты понял. Это логично и ПРОЩЕ, чем код в образе
Evgenii
а мне вашего не надо
так что очень голословно. По вашей же логике стоит собрать один образ, где внутри сразу mysql, php и nginx, а не три разных. У меня кровь чистая, я так не делаю. Идея микросервисов в разделении, а не наоборот
Evgenii
Так ты что предлагаешь я не понял. Я объяснил почему бред билдить образ с кодом внутри
Aleksandr
например собрать приложение на nodejs/php/python и собрать с образ с кодом и интепретатором, и так дистрибьютить
Aleksandr
одним контейнером?
одним образом
Evgenii
одним образом
один образ = один контейнер, правильно?
Aleksandr
один образ, N контейнеров
Evgenii
один образ, N контейнеров
господи, хорошо, допустим пользователи тоже наркоманы, они зачем-то запускают обычно не 1, а N контейнеров одного и того же приложения. Я не к этом веду
Evgenii
одним образом
если вы реально не понимаете, что обично для этого используется composer и механизм volumes, я задам наводящий вопрос
Evgenii
одним образом
Я ваш пользователь, хочу модицифизировать ваше приложение, вышла новая версия nodejs и я хочу её использовать, что мне придётся для этого делать?
Aleksandr
если вы реально не понимаете, что обично для этого используется composer и механизм volumes, я задам наводящий вопрос
какой композер? что вы несете?) волюмы используют при разработке. дальше это пакуют в образ и деплоят на продакшн
Evgenii
везде)
хотя бы один пример
Anonymous
если вы реально не понимаете, что обично для этого используется composer и механизм volumes, я задам наводящий вопрос
Ну, допустим, с volumes можно что-то придумать с кодом. Но а как сделать для десятка сервисов, которые дергают php код? Нужно билдить для каждого сервиса по контейнеру с cron, php-cli ?
John
хотя бы один пример
Курс чувака на юдеми, который ведет конференции и является докер кептейном
Aleksandr
хотя бы один пример
https://nodejs.org/en/docs/guides/nodejs-docker-webapp/
Dzmitry
Я ваш пользователь, хочу модицифизировать ваше приложение, вышла новая версия nodejs и я хочу её использовать, что мне придётся для этого делать?
если вы мой пользователь - вы пользуете ту версию которую я поддерживаю и поставляю вместе с продуктом, все остальное - самодурство
Aleksandr
ну и далее. просто открываете все ссылки по запросу deploy nodejs application docker
Aleksandr
свой интерпретируемый язык подставить
John
так и гуглить?
Docker Bret Fisher
John
Я хз, есть ли у него блог, но у него есть курс на udemy, в котором это четко обозначено
Aleksandr
python https://medium.com/google-cloud/deploy-python-application-to-google-cloud-with-docker-and-kubernetes-db33ee9fbed3
Aleksandr
php https://runnable.com/docker/php/dockerize-your-laravel-application
Dzmitry
серьёзно? мы точно говорим про open source ?
а разница? если я поставляю продукт в контейнере то хоть опен хоть энтерпрайз, я гарантирую, а нет - собирайте с сырцов сами и разбирайтесь с багами тоже сами, и не строчите миллион тикетов что ведет себя както не так
Anonymous
php https://runnable.com/docker/php/dockerize-your-laravel-application
Ну, это все классно когда кода не так много. А если у меня папка с кодом только больше 1Гб, то я только образы буду билдить неделю
Evgenii
а разница? если я поставляю продукт в контейнере то хоть опен хоть энтерпрайз, я гарантирую, а нет - собирайте с сырцов сами и разбирайтесь с багами тоже сами, и не строчите миллион тикетов что ведет себя както не так
окей, я разработчик, я хочу перевести свою приложение на новую версию php, насколько это дольше и сложнее, нежели использую 3 разных контейнера вы осознаёте?
Evgenii
форк, разработка, пул реквест что тут сложного? )
3 софтины будут собираться в 3 раза дольше, не? Я хочу поменять только один компонент, почему я пересобираю всё?
Evgenii
Docker Bret Fisher
это его репо? https://github.com/BretFisher/node-docker-good-defaults Я тоже вижу заголовок NODE DOCKER ХОРОШИЕ ПРАКТИКИ и там используется COMPOSER с подлючаемым volume кода приложения /opt/app ????
Evgenii
А я понял, он предлагает делать так для дева и билдить образ для прода
Anonymous
это его репо? https://github.com/BretFisher/node-docker-good-defaults Я тоже вижу заголовок NODE DOCKER ХОРОШИЕ ПРАКТИКИ и там используется COMPOSER с подлючаемым volume кода приложения /opt/app ????
Ну, docker-compose не годится для продакшена. По поводу огромного кода - его придется делать и правда через volume. Иначе образы будут просто огромные. И на билд и пулл этих образов будет уходить неделя.
Evgenii
Вобщем вы меня немного запутали, я понял мысль
Anonymous
А я понял, он предлагает делать так для дева и билдить образ для прода
У меня был вопрос немного о другом? Как организовать работу с тучей мелких сервисов, которые дергают один и тот же код?
Evgenii
Если приложение не огромное и мы собираемся деплоить на прод, образ можно билдить сразу с кодом и это будет правильно, я согласен. Прощу прощения
Evgenii
например собрать приложение на nodejs/php/python и собрать с образ с кодом и интепретатором, и так дистрибьютить
однако пихать nodejs/php/python в один образ - не соглашусь, по ссылкам выше нигде такого нет
Petr
Ну, допустим, с volumes можно что-то придумать с кодом. Но а как сделать для десятка сервисов, которые дергают php код? Нужно билдить для каждого сервиса по контейнеру с cron, php-cli ?
Я планировал билдить один контейнер в котором полюкчается volume с исходниками + php-cli + файл crontab (внутри моного файлов) + CMD ["cron"], что думаете рабочий вариант?
Anonymous
Я планировал билдить один контейнер в котором полюкчается volume с исходниками + php-cli + файл crontab (внутри моного файлов) + CMD ["cron"], что думаете рабочий вариант?
Думаю, что нет. В идеале: один процесс = один контейнер. Т.е. контейнер - это просто ограниченный (cgroups,namespaces) процесс. И когда он падает, то контейнер должен падать. И уже кубер его сам должен перезапускать
Petr
Думаю, что нет. В идеале: один процесс = один контейнер. Т.е. контейнер - это просто ограниченный (cgroups,namespaces) процесс. И когда он падает, то контейнер должен падать. И уже кубер его сам должен перезапускать
Я думал это будет долгоживующий контейнер, в котором тем самым процессом будет вечноработающий процесс cron, который время от времени будет дёргать php-cli в соответсвие с файлом crontab
Anonymous
Я думал это будет долгоживующий контейнер, в котором тем самым процессом будет вечноработающий процесс cron, который время от времени будет дёргать php-cli в соответсвие с файлом crontab
А как контролировать что cron вообще что-то дергает? Или то, что он дергает отрабатывает, а не валится с ошибкой? А если делать по одному процессу, то удобно потом же логи собирать в тот же ELK
Anonymous
преувеличиваете конечно.
В чем преувеличиваю?
Petr
А как контролировать что cron вообще что-то дергает? Или то, что он дергает отрабатывает, а не валится с ошибкой? А если делать по одному процессу, то удобно потом же логи собирать в тот же ELK
действительно, контролировать как отработали мои php-cli скрипты никак (на самом деле мои php-cli скрипты сами пишут логи в файлы - в моём проекте я посмотреть эти log файлы в итоге смогу)
Aleksandr
docker logs containerId
Petr
Вот ещё вопросик: у меня 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? Зашквар ли вариант Б?
Viacheslav
Б вполне себе, особенно поначалу. Есть только один нюанс - пересобирать образ юудет чуточку сложнее, потому что докер не будет видеть изменений
Viacheslav
Но потом, постепенно мигрируегь на А и все, будешь как все
Anonymous
Вот ещё вопросик: у меня 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
Всем привет. Есть приложение по которому раскиданы URL внешней машины и если мы переносим на другую машину, то везде меняем IP естетсвенно, вот как от этого избавиться?
Roman
я уже думал про переменные среды
Nklya
Например не делать так
Roman
Например не делать так
невозможно, приложение на Angular и оно должно обращаться к машине по ее настоящему адресу
Roman
Например не делать так
я очень ценю Ваш юмор, но пришёл сюда чтобы решить поставленную задачу.
Aleksandr
я уже думал про переменные среды
по домену или передавать через переменные