
Semyon
03.01.2017
07:23:48
Потому что если они через вольюмы говорят они автоматически не переносимы
Угу

Виталий
03.01.2017
07:23:56
угу
:)

Google

Виталий
03.01.2017
07:24:37
да, да, да... это аргумент. Надо подумать че делать.

Yaroslav
03.01.2017
07:24:39
ассерты генери на стадии docker build и храни в контейнере
всегда так делаю

Виталий
03.01.2017
07:25:22
ок, а как же в ситуации когда несколько php-fpm понадобиться? Они ведь тоже могут не на одной тачке жить?
или это уже не проблемы докера и надо решать своими силами?

Yaroslav
03.01.2017
07:26:22
тебе и понадобиться несколько php-fpm. У тебя уже в контейнере должно быть готовое приложение
со всей статикой
кэшами для доктрины и прочего

Виталий
03.01.2017
07:27:54
но смотри, юзеры же загружают файлы в приложения (аватарки). Загружаются они через бэк, отдаются через nginx и все файлы аватарок должны быть доступны всем бэкам и фронтам чтобы одни могли отдавать, а другие управлять ими (удалять, добавлять и тд)
как такое решается?

Yaroslav
03.01.2017
07:28:57
о, это хороший вопрос. Ждал его
можешь воспользоваться aws s3 ?
пользовательская статика должна быть отдельной

Google

Yaroslav
03.01.2017
07:29:42
и персистентной
это не про докер

Виталий
03.01.2017
07:29:51
а, понял
да, я читал. Хм... интересненько это все. У меня есть закладка в системе на эту тему. Так что вот и займусь реализацией.
Так, про код - все билдить и распихивать по контейнерам?
хм... но вот опять же.
Есть проект, у него настроено CI, в процессе CI у меня уже создаеться не один контейнер с кодом, а два (или больше). Их хранить в одном репо с разными тегами или под каждый контейнер отдельный репо?
Это уже чисто из опыта тех, кто знает как удобно :)

Yaroslav
03.01.2017
07:33:49
вообщем, идеально так. ты docke pull your/app
отключешь интернет и docker run
и у тебя должен завестись контейнер

Виталий
03.01.2017
07:34:26
эм... у меня их 4 должно завестись.
ну база и мемкеш не в счет, ок... 2 должно стартовать nginx + php-fpm

Yaroslav
03.01.2017
07:35:01
ну тогда docker-compose up

Виталий
03.01.2017
07:35:16
соответственно pull надо двух контейнеров делать. Верно?

Yaroslav
03.01.2017
07:35:20
да

Виталий
03.01.2017
07:35:40
А вот как организовать их хранение? в одном репо или в разных?

Yaroslav
03.01.2017
07:35:46
главное что бы контейнер просто запустился, не меняя ничего в себе
лучше в разных
с тэгами может быть гемор

santa
03.01.2017
07:36:18
Это чат про аниме?
А про докер, всё верно

Yaroslav
03.01.2017
07:36:40
будут монстры типа latest-nginx latest-app latest-app2

Google

santa
03.01.2017
07:36:53
Замьючу полжалуй, как-то много месседжей

Виталий
03.01.2017
07:37:10
хм... и то верно.

Yaroslav
03.01.2017
07:40:01
репа с кодом у тебя может быть одна просто в ней может быть много docker-файлов

Виталий
03.01.2017
07:40:09
о, это хороший вопрос. Ждал его
Смотри, у меня в начале моего пути возникла такая проблема.
1. делаю клон и СКВ
2. далее надо сделать билд. Это значит что мне через контейнер с php нужно запустить composer install так как там проверяются зависимости. Соответствено файлы проекта должны лежать на хост машине, а делаю композер инсталл и потом снова пересоздаю контейнер с пхп в который уже копирую код...
так получается?

Yaroslav
03.01.2017
07:42:37
да, всю логику по сбору контейнера прячь в Dockerfile

Виталий
03.01.2017
07:42:46
то есть сперва я делаю что-то типа
docker run --rm php:latest composer install
а потом
docker build ...

Yaroslav
03.01.2017
07:43:11
ээ..

Виталий
03.01.2017
07:43:30
так вот не получится. Сперва надо через конетйнер с пхп все сбилдить с проверкой зависимостей. А потом собранный код уже пихать по разным контейнерам.

Yaroslav
03.01.2017
07:43:56
git pull origin master
docker build
docker run

Виталий
03.01.2017
07:44:48
хм... а хотя может для nginx и не придется ничего собирать. Соответственно такая операция нужна только для пхп, а значит и проблемы нет.
и все в докер файле поместиться.
Так, понял. Пойду попробую собрать это все.
В голове прям переворот сознаний :)

Виталий
03.01.2017
07:45:49

Yaroslav
03.01.2017
07:47:11
и тебе спасибо

Evgeny
03.01.2017
11:05:44
Насколько я помню, речь идет про одно хостовую ноду. Проще всего поднимать нгинкс со статикой и маунтом на хост или в волюм. И апп генерит статику в нгинкс через, например, вебдав
Ну и да - докер требует смены подхода. Если переносишь готовый эпп надо либо менять его, либо делать с костылями

Виталий
03.01.2017
11:23:53
ну вот у меня в логике это было учтено. У меня есть что-то типа собственного s3 для статики и своим API на отдельном домене. Оно расчитано на хранение картинок и отдачу их с хитрыми параметрами.
Так что вроде пока у меня все гладко. Осталось завернуть это и посмотреть что вышло :)

Evgeny
03.01.2017
11:31:07
Зачем тогда ты делаешь фигню?

Виталий
03.01.2017
11:31:36
аргументируй

Evgeny
03.01.2017
11:32:26
Тогда смысла шарить код - 0. И твои аргументы не очень

Google

Виталий
03.01.2017
11:34:14
почему смысла шарить код 0? Аргументируй.

Evgeny
03.01.2017
11:36:39
Потому что ты решаешь проблемы выше, которые решать не надо методом которым это делать не нужно

Eugene
03.01.2017
11:36:39

Evgeny
03.01.2017
11:37:23
Ну не коммитить же код, блин
Образ надо собирать на сборке

Eugene
03.01.2017
11:37:46
угу, плюсую

Виталий
03.01.2017
11:37:51

Evgeny
03.01.2017
11:38:32
Тогда прими докервей а не плоди килотонны фигни

Виталий
03.01.2017
11:38:41
Вот. Какой докервей?

Evgeny
03.01.2017
11:39:44
И в 6 раз мне повторить? Ты ж регулярно от него отказываешся

Admin
ERROR: S client not available

Виталий
03.01.2017
11:40:13
Людям свойственно учиться :)

Eugene
03.01.2017
11:40:49
Виталий, а можешь в двух словах сказать, зачем тебе в итоге нужно шарить код между 2 контейнерами?

Виталий
03.01.2017
11:40:59
Я услышал от Ярослава мнение выше - что надо взять приложение и разделить его на статику и бизнес логику и каждую из этих частей поместить в имаджи на стадии их сборки

Evgeny
03.01.2017
11:42:26
Да, хорошая идея
Ну и, собственно, я это тебе предлагаю уже месяц почти

Pavel
03.01.2017
12:45:12
И тут мы напарыааемся на огромный недостаток yii, в котором ассеты не могут быть сгенерены заранее
Т.к. они генерятся лениво

Constantine
03.01.2017
12:45:47
отруби ассеты и юзай статику
делов то

Google

Виталий
03.01.2017
12:46:03

Evgeny
03.01.2017
12:46:46
На этапе билда эту ленность не зафорсить?

Виталий
03.01.2017
12:48:36
Коллеги, спасибо всем.
Я задал достаточно много вопросов и получил от всех много ответов. Но вот я понял docker-way и теперь увидел все ошибки моей архитектуры.
Еще раз всем спасибо :)
Обещаю не выносить код в общий контейнер :)

Pavel
03.01.2017
12:52:53
Но правильный совет дали выше - хочешь идти самым сложным и правильным путем - отказывайся от встроенного менеджера ассетов, и переходи на npm/bower/webpack
Потом остается избавиться от yii, и правильная архитектура готова :)

Виталий
03.01.2017
12:55:08
а на что менять yii?

Evgeny
03.01.2017
12:55:22
У меня бывшие коллеги сейчас весь проект на юии переводить решили

Pavel
03.01.2017
12:55:56

Виталий
03.01.2017
12:56:16

Pavel
03.01.2017
12:56:23
Ассетами управлять вполуручную вполне реально

Виталий
03.01.2017
12:57:17
Можно еще разработчиков заменить и тогда точно правильная архитектура готова и приде конец страданиям :)
Так в любом проекте... меняешь весь стек, от сервера и технологий до людей и вроде все должно стать лучше :)

Pavel
03.01.2017
12:58:10
Ну прастити, кто тут у нас хочет сделать максимально сложно и грамотно ? ?

Виталий
03.01.2017
12:58:16
Ассетами управлять вполуручную вполне реально
напиши потом решение которое придумали с ассетами. Так как у меня проекта на 2-й версии и я уже тоже задумался из-за docker-way про ассеты... которые в этот вэй никак не вписываются
Еще раз спасибо всем кто принимает участие :)

Pavel
03.01.2017
13:00:57
Совсем мозг вправится когда дойдет, что пихать все в один контейнер вовсе не плохой вариант

Виталий
03.01.2017
13:01:26
ахаха :) выше обсуждали.
Это вариант для поиграться и для небольшого продакшена.

Pavel
03.01.2017
13:02:29
Ой да ладно большие продакшены для миллионов пользователей были еще задолго до докера, и не умерли как то

Sergey
03.01.2017
13:02:33

Виталий
03.01.2017
13:02:56
небольшой - это там где не нужно масштабирование.