Evgeny
Вы все говорите о двух разных вещах. Есть билд контейнер, которому не надо внутри себя хранить копии всех реп - при его сборке нужно просто добавить в него нужные инструменты
Evgeny
Есть конкретный проект для которого делается имадж через билд контейнер. В этот момент выкачивать сырцы
Anonymous
аа
Anonymous
ну там можно наверное просто volume+pull
Anonymous
но pull тоже не лучшая вещь, при push -f он ломается
Evgeny
Разделять можно разными волюмами которые указывать при запуске билд контейнера
Evgeny
Anonymous
можно каждый раз делать clone с depth=1
Evgeny
Я ж так и сказал?
Anonymous
да я и не спорю
Stanislav
это всегда COPY и всегда контейнер на проект
контейнер или имадж?
COPY отрабатывает при создании имаджа. Т.е. для каждой новой сборки нужно будет апдейтить имадж и запускать новый контейнер. И тогда неплохо бы контейнеры эти как-то версионировать, понимать что в них находится и всякое такое
Alex
Смотря для чего использовать докер, если для формирования enviroment проекта - то использовать volume, если вам нужно распространять проект - то copy во время билда
Evgeny
Stanislav
Evgeny
Stanislav
ну хорошо, идеи здравые, спасибо, буду обдумывать детатали.
Но вот тогда другая проблема. Допустим, есть у нас этот билд-контейнер, который каким-то образом получает сорцы и потом выплевывает в хост-систему какой-то собранный артифакт. Дальше нужно создать имадж новой версии с этим этим артифактом и сделать пуш в докер-регистри. Как при создании имаджа с приложением узнать, в какую папку был сохранен собранный артифакт?
Т.е. мне надо при создании билд-контейнера заложиться на какую-то одну папку в хостовой системе, и потом при сборке имаджа с приложением каждый раз вспоминать, где эта папка находится на текущей системе.
Я понимаю, что универсальный ответ "возьми gitlab и не мучайся". Но мне вот приспичило в самолете собрать на ломальной машинке весь проект, запустить его в минимальном окружении и пригнать тесты. Все кэши есть, сорс код вот лежит в папке, докер с имаджами есть.
Danila
\о/
Anton
\o/
Evgeny
ну хорошо, идеи здравые, спасибо, буду обдумывать детатали.
Но вот тогда другая проблема. Допустим, есть у нас этот билд-контейнер, который каким-то образом получает сорцы и потом выплевывает в хост-систему какой-то собранный артифакт. Дальше нужно создать имадж новой версии с этим этим артифактом и сделать пуш в докер-регистри. Как при создании имаджа с приложением узнать, в какую папку был сохранен собранный артифакт?
Т.е. мне надо при создании билд-контейнера заложиться на какую-то одну папку в хостовой системе, и потом при сборке имаджа с приложением каждый раз вспоминать, где эта папка находится на текущей системе.
Я понимаю, что универсальный ответ "возьми gitlab и не мучайся". Но мне вот приспичило в самолете собрать на ломальной машинке весь проект, запустить его в минимальном окружении и пригнать тесты. Все кэши есть, сорс код вот лежит в папке, докер с имаджами есть.
Что-то я совсем не понимаю что вы пишете. Зачем плеваться артефактами в хост систему? Почему нельзя в билд контейнере все что нужно сделать, в том числе пушнуть в регистри?
Evgeny
Зачем что-то помнить, все должно происходить атвоматически
Evgeny
А в самолете у вас зачем собирать оразы - вы их дальше никуда не денете. Так что вам нужно только поднятое окружение на котором вы можете гонять своб разработку
Dan
\=/
Stanislav
Evgeny
А как не контейнер это делает?
Stanislav
Это делает докер. В текущей задаче докера внутри билд контейнер нет. Или есть?
Evgeny
ну добавьте, в чем проблема? -v /var/lib/docker.sock:/var/lib/docker.sock
Evgeny
и не надо будет ничего помнить
Stanislav
Это считается нормальной практикой?
Evgeny
да
Stanislav
Ужас :/
Evgeny
Аргументируете?
Dan
Это нормальная практика
nvkv
Nikita Dwarf
Всем привнт
Nikita Dwarf
Такой вопрос,можно ли во время билда перехватить управление
Nikita Dwarf
?
Evgeny
Что бы это значило....
Stanislav
Аргументируете?
Это костыль. Небольшой, вроде стабильный и даже элегантный, но костыль. По идее же контейнер ничего не должен знать о хост системе, а тут он получает ручки для управления собой, которыми не должен обладать. И вообще ручки над управлением другими контейнерами. Никакой хваленой докерной излированности
Evgeny
А кто-то хвалит полупрозрачный халатик изоляции докера? Вам показалось. Но, при желании никто не мешает запустить DockerInDocker образ и делать все в нем, смысла только в этом тотальный 0 при условии своего проекта
nvkv
nvkv
можете, в принципе, через http-api прицепиться
Nikita Dwarf
Evgeny
ага
Evgeny
Evgeny
Nikita Dwarf
Это надо т.к. программу через инстадлео самописный ставить..
Nikita Dwarf
Чтоб не пересоздавать контейнер а сразу поставить..
Vladimir
Stanislav
у вас на картинке докер с контейнером в докере. А надо контейнер в контейнере на докере
Stanislav
как-то так
Stanislav
Danila
привет
Danila
расскажите, пожалуйста, разумно ли делить скульсервер и сам файл базы в разные контейнеры?
Danila
говнометанием пренебречь
jagga
файлы в вольюм
Evgeny
не особо. если делать в хост системе или в волюме будет более осмысленно
Danila
хорошо. поясните за вольюм, пожалуйста
Evgeny
вообще я б рекомендовал просто -v
Roman
встречал еще практику создания отдельного контейнера data. в который пихается все данные необходимые другим контейнерам и после расшаривается через volumes-from. насколько оправдан такой метод?
Aleksandr
если данные нужно подключать к нескольким контейнерам, то их надо вынести в контейнер (типа предложенный выше data). Если данные базы используются только базой (что так и есть обычно), то используем -v (volume)
Aleksandr
первый кейс можно заменить на создание named volume - их можно подключать к нескольким контейнерам
Evgeny
ИМХО еще проще все щарить с папки с хоста
Aleksandr
это и есть мой второй вариант
Evgeny
named volume немного не то
Roman
в случае с датой я тоже имелл ввиду что этот контейнер мапит в себя с хоста все что нужно а потом раздает остальным контейнерам. И сам вопрос заключался в целесообразности плодить еще одну сущность в виде data контейнера
Evgeny
я ее не вижу
Aleksandr
еще раз с другого конца: а) если нужно проносить данные в другие контейнеры, то юзаем контейнер для данных или named volume б) если не нужно, то маунтим диру с хоста через обычный volume
Roman
тогда еще такой вопрос, наверное тоже зависит от ситуации, но все же. Насколько противоречит философии докера билд приложения внутри контейнера(клон кода внутрь контейнера, и какой нить composer собирает все зависимости). Цель - иметь саморазворачивающуюся среду для разработки по docker-compose up. И есть ли возможность вынести код наружу что бы разработчик мог править непосредственно код из докера?
Aleksandr
Aleksandr
при деплое бест практайс билдить код внутрь, при разработке - снаружи.
Evgeny
снаружи? Orly?
Roman
вот это и смущает, не будет ли компоусер собирать зависимости хост системы а не той что внутри контейнера
Aleksandr
имеется в виду маунтить диру с хоста
Aleksandr
Roman
о, спасиб, про него я чет не дошел почитать. теперь понятно
Nikita Dwarf
Вснм привет
Nikita Dwarf
есть знатоки supervisord ?