Evgeny
Вот и мне интересно
Vitalii
а как нгинкс будет раздавать статику?
Vitalii
у него долежн быть доступ все к тому же приложению
Bruno
О боги, почему все время с пхп возникает тема "как бы черезжопнее сделать". Почему нельзя нормально?
а что ты ожидал от программистов на языке, автор которого открыто признался что ничего не проектировал?)
Evgeny
А что статика делает в контейнере с кодом?
Vitalii
храниться. картинки, стили и прочее - это часть проекта и она живет в одном репо с кодом
Evgeny
Ну тогда вам не докер нужен, а просто виртуалка
Vitalii
ну приехали :)
Evgeny
Если хотите докер - постарайтесь понять чем он отличается от виртуализации и перестаньте делать крокодилов из швейной машинки
Evgeny
У Фила - особая ситуация, не надо его кейс расширять на всех. Если у вас свой проект - делайте нормально
Vitalii
а где видно что я хочу сделать виртуализацию?
Vitalii
что не правильного в том, что под каждый процесс я создал отдельный контейнер? и того уже имею контейнеры nginx php memcache db
Vitalii
уверен, что ничего. Так как инфтраструктура на докере и должна выглядеть.
Vitalii
Осталось только два контейнера снабрить кодом и все заработает.
Evgeny
Не надо код делать отдельно
Evgeny
Это моветон и опенвезешность
Vitalii
Я не спорю, вариант костыльный, но удобный. У него есть несколько преимуществ: 1. Отдельны контейнер с кдом проще обслуживать. Чтобы обновить код нужно только пересоздать простой контейнер, а не пересобирать заново все компоненты пхп. Да, можно сделать наследование контейнеров. Но проддержка от этого только усложниться. 2. Отдельный контейнер с кодом отлично вписываеться в объектную модель. app / \ nginx php вместо app (php + code) -- mount --> nginx
🏳️ Phil
Один контейнер с нгинксом. Один с пхпфпм и вшитым кодом
Да не надо вшивать код, что за жопень-то?
Vitalii
Да не надо вшивать код, что за жопень-то?
надо или не надо это уже дело кажого. Пр разработке можно и не вшивать, а хранить на хост машине. А при деплое надо вшивать, чтобы ничего не пришлось собирать на продакшене и часом не запороть все при сборке. Исключается человеческий фактор до минимума
Evgeny
Да не надо вшивать код, что за жопень-то?
А хранит его отдельно не жопа? Давайте еще масштабировать добавлением второго пхпфпм в тот же контейнер, чего уж там
Vitalii
Кеш сборки решает проблему пересборки пыхи
да, кеш сборки решает когда нет изменений в самых правилах сборки. Если добавить модуль какой-то в контейнер с пыхой, то придется пересобрать два контейнера (если сделать наследование)
Vitalii
как видно, каждый из нас прав :) и я предлагаю не спорить. За время изучения докера я насмотрелся на контейнеры в которых все службы зашиты, так что мой вариант еще куда не шел :)
Vitalii
сейчас вопрос не имеет отношений конкретно к моему приложению. Я не могу понять, почему volumes_from не монтируется
Vitalii
и кто-то может сказать, что будет, если в compose написать у сервиса вот так volumes: - /var/www/html что и куда примонтируется или создасться?
Evgeny
Если так хочется шарить из контейнера - почему не шарить из того же где уже работает фпм?
Evgeny
В чем смысл разделять?
Vitalii
Если так хочется шарить из контейнера - почему не шарить из того же где уже работает фпм?
Есть несколько преимуществ: 1. Отдельны контейнер с кодом проще обслуживать. Чтобы обновить код нужно только пересоздать простой контейнер, а не пересобирать заново все компоненты пхп. Да, можно сделать наследование контейнеров. Но проддержка от этого только усложниться. 2. Отдельный контейнер с кодом отлично вписываеться в объектную модель. app / \ nginx php вместо app (php + code) -- mount --> nginx
Evgeny
Второй пункт не понимаю, извините. Первый, правда, тоже. Чем проще? Что надо все время таскать два вместо одного?
Evgeny
Пересборка компонентов решается кешом сборки
Vitalii
второй пункт - обычное объектное мышление. Общие части вынести в отдельный объект. Если у двух контейнеров есть что-то общее (код), значит это общее лучше сделать отдельным контейнером. Я так мыслю :)
Vitalii
мы пока спорим на счет моей инфтраструктуры, но в этом нет смысла :) я же не навязываю ее вам
Evgeny
Я первый раз увидел человека который сможет внятно обосновать свою точку зрения, а я пытаюсь ее понять уже давно :)
Vitalii
Vitalii
Будет создан анонимный том в /var/lib/docker
есть контейнер app, вот его Dockerfile ---- FROM busybox:musl COPY ./source /var/www/html WORKDIR /var/www/html ---- что нужно сделать, чтобы его папку /var/www/html можно было через volumes_from смонтировать в другой контейнер?
Sergei
Volume /var/www/html
Vitalii
Volume /var/www/html
в этом Dockerfile или в файле контейнера к которому нужно примаунттить? но ведь эта конструкция помечает указанные пути к монтированию с хост машины или с другого контейнера при запуске создаваемого контейнета.
Vitalii
Volume /var/www/html
в Dockerfile контейнеров в которых я жду эту папку из вне указано VOLUME ["/var/www/html"]
Sergei
в докерфайле с сорцами, в остальных volumes_from
Vitalii
в докерфайле с сорцами, в остальных volumes_from
невероятно, но заработало! Скажи, пожалуйста, в чем была моя ошибка? Ведь команда VOLUME ["/var/www/html"] помечает том к монтированию из вне, а у меня он уже был в контейнере. Где я ошибся?
Sergei
Вот же, первой строчкой) "The VOLUME instruction creates a mount point with the specified name and marks it as holding externally mounted volumes from native host or other containers." https://docs.docker.com/engine/reference/builder/#/volume
Vitalii
Вот же, первой строчкой) "The VOLUME instruction creates a mount point with the specified name and marks it as holding externally mounted volumes from native host or other containers." https://docs.docker.com/engine/reference/builder/#/volume
точняк, тоже только что увидел в доке. Мне кажется в прошлые разы не дочитывал предложение до конца, или просто глаза замылились после дня ковыряния этого. Спасибо огромное!
Sergei
но на самом деле некоторые места в доках выделяли бы жирным :)
🏳️ Phil
Если так хочется шарить из контейнера - почему не шарить из того же где уже работает фпм?
Ну т.е. мы любой чих пересборки контейнера сопрягаем с набивкой его кодом
Evgeny
Любой коммит в мастер - да
Evgeny
Если ты меняешь каждые 5 минут настройки фпм - что-то с тобой не то
Sergei
Сложно поспорить
Evgeny
Ну да, ну да. Настройки меняете каждые пять минут вы, делите все поровну просто так тоже вы, а усложняю я
Vitalii
кто GitLab использует?
Sergei
Ну т.е. мы любой чих пересборки контейнера сопрягаем с набивкой его кодом
Вот объясни, зачем на хабе в офф репах on build образы для python, например?
🏳️ Phil
Ну да, ну да. Настройки меняете каждые пять минут вы, делите все поровну просто так тоже вы, а усложняю я
эээ... ну для меня например это одна из фишек докера - возможность играть настройками на ходу практически
Vitalii
если надо играть с настройками - прокиньте их на хост машину и все. Или меняйте сразу в контейнере, потом сохраните вариант конечный для сборки повторной и все.
Vitalii
пересобирать контейнер каждый раз нет смысла. Схема котрую я создавал для деплоймента. Для дева будет все прокинуло на хост-машину и агонь!
🏳️ Phil
эээ... а в чем разница с обычными сервисами?
нука сходу расскажи мне как с пхп5.6 на 7.0 переехать в обычном сервисе
Evgeny
killall php-fpm && systemctl start php7
Vitalii
1. Берем, тушим проект и начинаем терять деньги 2. Сносим старый пых 3. ставим новый пых 4. Продолжаем терять деньги 5. В концу дня профит!
Evgeny
Но вообще переезд с 5.6 на 7, думается мне, потребует фиксов в коде, это не просто запустить в новом контейнере.
🏳️ Phil
Но вообще переезд с 5.6 на 7, думается мне, потребует фиксов в коде, это не просто запустить в новом контейнере.
ну. фиксы в коде ты как делать будешь? докер это ведь меньше всего про прод. хотя и про него
Evgeny
Ну так же как и сейчас - закоммичу фикс, дальше дженкинс выкачивает сырцы, собирает контейнер, прогоняет тесты, деплоит на стейджинг, прогоняет интеграционные и функциональные тесты, дальше нажму кнопку в дженскинсе и деплойну блюгрином на прод
Evgeny
На локали у меня сырцы тоже маунтятся с локалоста в контейнер, но блин - это локальная разработка
Evgeny
Чем больше вы сейчас делаете фигню, тем сложнее настроить ci/cd дальше
Vitalii
Чем больше вы сейчас делаете фигню, тем сложнее настроить ci/cd дальше
слушай, а хорошая ли идея разворачивать gitlab из докер образа? как его конфигурировать-то потом?
Evgeny
ну. так докер в основном про это
Не только. Докер - это про ci/cd. Когад у тебя в тестах и проде один контейнер, без эдж кейсов
Evgeny
слушай, а хорошая ли идея разворачивать gitlab из докер образа? как его конфигурировать-то потом?
Гитлаб давно поставляяется как контейнер. Только раньше это были образы которые ложильсь в опт, теперь - докер имаджи. Я хз как сейчас его конфигурить, но обычно они это хорошо продумывают
Anonymous
прошу прощения за длинный текст, если не сложно то ответьте плиз как копать или сделать, сам разбираюсь еще с деталями а задачу надо выполнить скорее Есть приложение написанное на Meteor.js - при деплое на сервер через https://github.com/kadirahq/meteor-up оно запускается внутри docker Есть приложение https://github.com/arachnys/athenapdf - выдает то что надо с помощью команды в консоли docker run ... Мне надо эту команду запустить внутри контейнера с Meteor и получить результаты При установке meteor-up есть возможность залинковать docker, как я понимаю (есть в документации meteor-up) из Meteor пытаюсь запустить с помощью node.js вызова