George
насчет файлбита - там с журналди вроде есть нюансы, но флюент гребет
Yan
Как сделать то, не знаю что?
почему же? я спрашиваю на конкретном примере тэгирования и версионирования
Ильдар
Очень не-конкретный вопрос )
Mikalai
через переменые окружения какие-нибудь? или придется каждый раз yml ci править и вписывать нужный тэг?
В гите же есть теги и там можно тег из переменной получить (точно не помню название)
Ильдар
Можешь имя ветки использовать CI_COMMIT_REF_SLUG
George
нет
George
не совсем
George
смотрите
Ильдар
Можешь ничего не использовать, можешь захардкодить.
George
в гитлабе есть херня
George
в тег попадает ЛИБО тег, ЛИБО бранч
George
что было при пуше
George
соответственно, если ты пушишь и тег, и бранч, то начнется два пайплайна
George
с одинаковым gitlab sha commit
George
как бы не комильфо
George
решение какое
Ильдар
Найс
George
определять что в тебя вдули. сделать разбивку only: tags или only: branch
George
ну, или git describe юзай
George
хотя там есть нюансы тоже, т.к. репа в детачед режиме (везде проблемы, блять)
Ильдар
Можешь хэш комита использовать. @hobo_with_a_hookah что тебе больше нравится
George
нет. хэш коммита это верный путь. Он должен быть. Но хочется еще иметь возможность образ перетегировать на бранч или на тег, если он есть
George
_CI_COMMIT_SHA := $(shell git symbolic-ref --short HEAD | sed "s/\//_/g")
George
вот примерно так можно sha вытащить. Аналогично тащится тег и бранч
George
а в рамках gitlab ci, кстати, еcть "${CI_COMMIT_TAG}»
George
по-моему, я всех напугал
Anton 🐻
привет, подскажите, multi-stage builds норм практика? видел на просторах инета заметку что таким способом можно и все имаджи запихнуть в 1 Dockerfile, а в docker-compose.yml нужные таргеты указывать
Anton 🐻
https://blog.andreiavram.ro/docker-multi-stage-builds-docker-compose/
Anton 🐻
или зашквар?
Yan
тут ты прав) за ответы спасибо, хотел еще узнать, CI_JOB_ID там какой-то рандомный номер от гитлаба дает, или он все-таки идет по порядку?
George
вот он уникален и монотонен в рамках проекта. Типа билд номера.
George
если используешь PIPELINE_ID (без второй I), то у тебя это глобальный айди в пределах инстанса гитлаба
George
я бы сильно на оба не рассчитывал, т.к. если ты переливаешь гитлаб часто, то они могут обнуляться ) такое себе
George
либо нужно экспортить - импортить проекты с метаданными
George
(они там хранятся)
George
multi-stage очень даже норм, но запихивать в один так себе идея имхо
да, в один мультистейдж докерфайл все запихивать - так себе идея. Если все образы по сути одно и то же, то можно их параметризировать через build-args и ONBUILD инструкцию докерфайла
George
либо вообще собирать мейкфайлом )))))
Yan
ладно, оставлю тогда пока коммит_ша до лучшего варианта
George
ладно, оставлю тогда пока коммит_ша до лучшего варианта
он лучший ) но реально хочется тег иметь
Yan
нашел, кстати, такой вариант, может пригодится кому
Yan
https://stackoverflow.com/questions/46810829/use-semver-or-a-timestamp-in-gitlab-piplelines
Ваня
Привет. Есть 2 контейнера, nginx и php-fpm с laravel, так вот, запрос к api 350мс, это норм? Неужели такой overhead? Или где-то не докрутил конфиг?
Anton 🐻
Привет. Есть 2 контейнера, nginx и php-fpm с laravel, так вот, запрос к api 350мс, это норм? Неужели такой overhead? Или где-то не докрутил конфиг?
поставь дебаг консоль для ларика, он будет показывать какие компоненты системы сколько времени откушали. https://github.com/barryvdh/laravel-debugbar
Anton 🐻
как правило там только инициализация ядра 40мс
Ильдар
На нормальной ОС быстрее?
Ильдар
https://github.com/docker/for-win/issues/1936#issuecomment-444323220
Rus
Всем привет, подскажите плиз в docker-compose.yml в чем будет отличие когда я объявляю volumes: в самом начале от того когда я это не делаю и просто прописываю volumes : и пишу дальше путь проброса с локального каталога во внутрь контейнера
Ваня
На нормальной ОС быстрее?
Нет возможности проверить) Интересно то, что у меня еще есть контейнер с webpack hmr, так он файлы измененные на хосте пересобирает в контейнере чуть медленнее, чем если бы я это делал вообще без докера. Т.е. это какбы намекает, что с томами все норм, или нет?))
Ильдар
multi-stage очень даже норм, но запихивать в один так себе идея имхо
Мультистейдж норм. У меня в Dockerfile обычно три образа: FROM apline as build ... FROM alpine as release COPY --from=build sth swh ... FROM release as test ...
Anton 🐻
ну я больше про то что в 1 файл пихают и образы nginx и go и php и т.п.
Anton 🐻
чтоб кучу файликов не солздавать или папкам их не распихивать
Mikalai
Мультистейдж норм. У меня в Dockerfile обычно три образа: FROM apline as build ... FROM alpine as release COPY --from=build sth swh ... FROM release as test ...
Кстати чтобы кешировать слои в том же gitlab-ci, в него надо пушить и билдеры тоже
Ильдар
Кстати чтобы кешировать слои в том же gitlab-ci, в него надо пушить и билдеры тоже
Точно. Сколько раз я разбился о кэш. Сколько еще разобьюсь.
ilya
COPY --from=your.registry.com/something/builder:latest / /
Mikalai
Это не кэш, это костыль же)
ilya
это крутая штука для переиспользования, если у тебя большая инфра и много разных реджистри
Ильдар
А есть нормальный способ шарить кэш докера между ранерами?
Mikalai
Ой
Mikalai
docker pull конечно же
Mikalai
Спать пора 🤦‍♂
Ильдар
:)
Anton 🐻
Ксть ещё странный вопрос. Примерно такая структура директорий: docker-compose.yml docker-compose.dev.yml docker-compose.prod.yml images/nginx/Dockerfile images/go/Dockerfile images/php/Dockerfile app/* в Dockerfile кратко такое содержание: FROM composer:1.6.5 as vendor ADD ./app/composer.lock composer.lock RUN composer install но это не срабатывает, т.к. файл ./app/composer.lock находится в выше по дереву директорий чем директория в которой собирается образ. Как лучше организовать подобное?
Anton 🐻
как вариант плохого решения - все образы слить в один большой Dockerfile и положить его в корень.
Alexander
Привет. Есть два сайта в одном докере и мне нужно слать запрос с одного сайта на второй и непонятно по какому адресу слать запрос т.к. запрос инициируется изнутри докера
Aleksey
привет коллеги! как с PyCharm локальную композицию подружить? Нужно как-то удалённый интерпритатор настроить, вот не пойму как именно на ubuntu