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 так как там проверяются зависимости. Соответствено файлы проекта должны лежать на хост машине, а делаю композер инсталл и потом снова пересоздаю контейнер с пхп в который уже копирую код...
так получается?
Vitalii
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
Yaroslav
и тебе спасибо
Evgeny
Насколько я помню, речь идет про одно хостовую ноду. Проще всего поднимать нгинкс со статикой и маунтом на хост или в волюм. И апп генерит статику в нгинкс через, например, вебдав
Evgeny
Ну и да - докер требует смены подхода. Если переносишь готовый эпп надо либо менять его, либо делать с костылями
Vitalii
ну вот у меня в логике это было учтено. У меня есть что-то типа собственного s3 для статики и своим API на отдельном домене. Оно расчитано на хранение картинок и отдачу их с хитрыми параметрами.
Так что вроде пока у меня все гладко. Осталось завернуть это и посмотреть что вышло :)
Evgeny
Зачем тогда ты делаешь фигню?
Vitalii
аргументируй
Evgeny
Тогда смысла шарить код - 0. И твои аргументы не очень
Vitalii
почему смысла шарить код 0? Аргументируй.
Evgeny
Потому что ты решаешь проблемы выше, которые решать не надо методом которым это делать не нужно
Evgeny
Ну не коммитить же код, блин
Evgeny
Образ надо собирать на сборке
E
угу, плюсую
Vitalii
Evgeny
Тогда прими докервей а не плоди килотонны фигни
Vitalii
Вот. Какой докервей?
Evgeny
И в 6 раз мне повторить? Ты ж регулярно от него отказываешся
Vitalii
Людям свойственно учиться :)
E
Виталий, а можешь в двух словах сказать, зачем тебе в итоге нужно шарить код между 2 контейнерами?
Vitalii
Я услышал от Ярослава мнение выше - что надо взять приложение и разделить его на статику и бизнес логику и каждую из этих частей поместить в имаджи на стадии их сборки
Evgeny
Да, хорошая идея
Evgeny
Ну и, собственно, я это тебе предлагаю уже месяц почти
Pavel
И тут мы напарыааемся на огромный недостаток yii, в котором ассеты не могут быть сгенерены заранее
Pavel
Т.к. они генерятся лениво
Constantine️
отруби ассеты и юзай статику
Constantine️
делов то
Vitalii
Evgeny
На этапе билда эту ленность не зафорсить?
Vitalii
Коллеги, спасибо всем.
Я задал достаточно много вопросов и получил от всех много ответов. Но вот я понял docker-way и теперь увидел все ошибки моей архитектуры.
Еще раз всем спасибо :)
Vitalii
Обещаю не выносить код в общий контейнер :)
Pavel
Но правильный совет дали выше - хочешь идти самым сложным и правильным путем - отказывайся от встроенного менеджера ассетов, и переходи на npm/bower/webpack