Vitalii
угу
Vitalii
:)
Vitalii
да, да, да... это аргумент. Надо подумать че делать.
Yaroslav
ассерты генери на стадии docker build и храни в контейнере
Yaroslav
всегда так делаю
Vitalii
ок, а как же в ситуации когда несколько php-fpm понадобиться? Они ведь тоже могут не на одной тачке жить?
Vitalii
или это уже не проблемы докера и надо решать своими силами?
Yaroslav
тебе и понадобиться несколько php-fpm. У тебя уже в контейнере должно быть готовое приложение
Yaroslav
со всей статикой
Yaroslav
кэшами для доктрины и прочего
Vitalii
но смотри, юзеры же загружают файлы в приложения (аватарки). Загружаются они через бэк, отдаются через nginx и все файлы аватарок должны быть доступны всем бэкам и фронтам чтобы одни могли отдавать, а другие управлять ими (удалять, добавлять и тд)
Vitalii
как такое решается?
Yaroslav
о, это хороший вопрос. Ждал его
Yaroslav
можешь воспользоваться aws s3 ?
Yaroslav
пользовательская статика должна быть отдельной
Yaroslav
и персистентной
Yaroslav
это не про докер
Vitalii
а, понял
Vitalii
да, я читал. Хм... интересненько это все. У меня есть закладка в системе на эту тему. Так что вот и займусь реализацией. Так, про код - все билдить и распихивать по контейнерам?
Vitalii
хм... но вот опять же. Есть проект, у него настроено CI, в процессе CI у меня уже создаеться не один контейнер с кодом, а два (или больше). Их хранить в одном репо с разными тегами или под каждый контейнер отдельный репо?
Vitalii
Это уже чисто из опыта тех, кто знает как удобно :)
Yaroslav
вообщем, идеально так. ты docke pull your/app отключешь интернет и docker run
Yaroslav
и у тебя должен завестись контейнер
Vitalii
эм... у меня их 4 должно завестись.
Vitalii
ну база и мемкеш не в счет, ок... 2 должно стартовать nginx + php-fpm
Yaroslav
ну тогда docker-compose up
Vitalii
соответственно pull надо двух контейнеров делать. Верно?
Yaroslav
да
Vitalii
А вот как организовать их хранение? в одном репо или в разных?
Yaroslav
главное что бы контейнер просто запустился, не меняя ничего в себе
Yaroslav
лучше в разных
Yaroslav
с тэгами может быть гемор
A.
Это чат про аниме?
A.
А про докер, всё верно
Yaroslav
будут монстры типа latest-nginx latest-app latest-app2
A.
Замьючу полжалуй, как-то много месседжей
Vitalii
хм... и то верно.
Yaroslav
репа с кодом у тебя может быть одна просто в ней может быть много docker-файлов
Vitalii
о, это хороший вопрос. Ждал его
Смотри, у меня в начале моего пути возникла такая проблема. 1. делаю клон и СКВ 2. далее надо сделать билд. Это значит что мне через контейнер с php нужно запустить composer install так как там проверяются зависимости. Соответствено файлы проекта должны лежать на хост машине, а делаю композер инсталл и потом снова пересоздаю контейнер с пхп в который уже копирую код... так получается?
Yaroslav
да, всю логику по сбору контейнера прячь в Dockerfile
Vitalii
то есть сперва я делаю что-то типа docker run --rm php:latest composer install а потом docker build ...
Yaroslav
ээ..
Vitalii
так вот не получится. Сперва надо через конетйнер с пхп все сбилдить с проверкой зависимостей. А потом собранный код уже пихать по разным контейнерам.
Yaroslav
git pull origin master docker build docker run
Vitalii
хм... а хотя может для nginx и не придется ничего собирать. Соответственно такая операция нужна только для пхп, а значит и проблемы нет.
Vitalii
и все в докер файле поместиться. Так, понял. Пойду попробую собрать это все. В голове прям переворот сознаний :)
Vitalii
git pull origin master docker build docker run
Спасибо тебе! Невероятно помог :)
Yaroslav
и тебе спасибо
Evgeny
Насколько я помню, речь идет про одно хостовую ноду. Проще всего поднимать нгинкс со статикой и маунтом на хост или в волюм. И апп генерит статику в нгинкс через, например, вебдав
Evgeny
Ну и да - докер требует смены подхода. Если переносишь готовый эпп надо либо менять его, либо делать с костылями
Vitalii
ну вот у меня в логике это было учтено. У меня есть что-то типа собственного s3 для статики и своим API на отдельном домене. Оно расчитано на хранение картинок и отдачу их с хитрыми параметрами. Так что вроде пока у меня все гладко. Осталось завернуть это и посмотреть что вышло :)
Evgeny
Зачем тогда ты делаешь фигню?
Vitalii
аргументируй
Evgeny
Тогда смысла шарить код - 0. И твои аргументы не очень
Vitalii
почему смысла шарить код 0? Аргументируй.
Evgeny
Потому что ты решаешь проблемы выше, которые решать не надо методом которым это делать не нужно
E
почему смысла шарить код 0? Аргументируй.
я извиняюсь, что вмешиваюсь уже в разгаре обсуждения, но тем не менее, а зачем тебе вообще докер нужен?
Evgeny
Ну не коммитить же код, блин
Evgeny
Образ надо собирать на сборке
E
угу, плюсую
Vitalii
я извиняюсь, что вмешиваюсь уже в разгаре обсуждения, но тем не менее, а зачем тебе вообще докер нужен?
Хочу освоить технологию чтобы расширить свою область знаний и навыков.
Evgeny
Тогда прими докервей а не плоди килотонны фигни
Vitalii
Вот. Какой докервей?
Evgeny
И в 6 раз мне повторить? Ты ж регулярно от него отказываешся
Vitalii
Людям свойственно учиться :)
E
Виталий, а можешь в двух словах сказать, зачем тебе в итоге нужно шарить код между 2 контейнерами?
Vitalii
Я услышал от Ярослава мнение выше - что надо взять приложение и разделить его на статику и бизнес логику и каждую из этих частей поместить в имаджи на стадии их сборки
Evgeny
Да, хорошая идея
Evgeny
Ну и, собственно, я это тебе предлагаю уже месяц почти
Pavel
И тут мы напарыааемся на огромный недостаток yii, в котором ассеты не могут быть сгенерены заранее
Pavel
Т.к. они генерятся лениво
Constantine️
отруби ассеты и юзай статику
Constantine️
делов то
Evgeny
На этапе билда эту ленность не зафорсить?
Vitalii
Коллеги, спасибо всем. Я задал достаточно много вопросов и получил от всех много ответов. Но вот я понял docker-way и теперь увидел все ошибки моей архитектуры. Еще раз всем спасибо :)
Vitalii
Обещаю не выносить код в общий контейнер :)
Pavel
На этапе билда эту ленность не зафорсить?
Ну впринципе можно вручную перечислить все ассеты и написать 10 строчек кода которые все опубликуют
Pavel
Но правильный совет дали выше - хочешь идти самым сложным и правильным путем - отказывайся от встроенного менеджера ассетов, и переходи на npm/bower/webpack