172 похожих чатов

Всем привет, у меня вопрос по dockerfiles. Можно ли сделать

так, чтобы при изменении определённого аргумента не производился ребилд слоёв, зависимых от него? В качестве примера у меня есть такая последовательность команд:
ARG JOBS=4
RUN make a -j$JOBS
RUN make b -j$JOBS

Очевидно, что изменение JOBS принципиально не влияет на результат сборки, а лишь на её скорость, поэтому, если make a уже собралось, я бы хотел его переиспользовать этот слой, несмотря на изменение JOBS через --build-arg. Это возможно?

6 ответов

7 просмотров

Нет, так работает кэширование слоев

Павел- Автор вопроса
Максим Мартынов
Нет, так работает кэширование слоев

Вообще, похожего поведения ведь можно добиться через доступ по сети, например, вот так: RUN make a -j$(curl ...) RUN make b -j$(curl ...) И меня разочаровывает, что нет штатного инструмента, позволяющего сознательно (и с полной ответственностью на авторе такого кода) сделать то же самое с аргументами.

Павел- Автор вопроса
Максим Мартынов
Зачем вообще делать это через build-arg?

Я не вижу других вариантов, кроме как брать максимально доступное число ядер или указать какое-то конкретное число. С первым вариантом система становится иногда совершенно неотзывчивой, поэтому хочется иметь возможность задавать значения по-меньше. Просто уменьшить их для всех разработчиков, которые будут делать билд тоже как-то не очень.

Павел
Я не вижу других вариантов, кроме как брать максим...

почему бы не брать 0.5*число ядер, или что-нибудь подобное?

Павел- Автор вопроса
Максим Мартынов
почему бы не брать 0.5*число ядер, или что-нибудь ...

Потому что других разработчиков, которые могут собирать образ, может не волновать проблема отзывчивости, но может волновать скорость. RUN --mount=type=cache выглядит интересно, попытаюсь разобраться, спасибо!

Похожие вопросы

Обсуждают сегодня

Anyone here suffers from unexplained aural migraines, who would be up for talking for a bit? Doesn't *have* to be aural, but I am not asking about headaches, I mean actual mi...
Martin Rys
55
Привет, нужен совет старших товарищей. Есть глобальная переменная var DefaultDataFolder:string; инициализируем DefaultDataFolder:='a:\_OUT\'; есть примитивная процедур...
Max Otto
11
Вопрос. Теоретический. Есть список команд. Команды отправляю в обработку некой функции, по очереди. Разные команды могут давать разные результаты после обработки. В зависимос...
Serjone
7
Всем вечера. Подскажите как лучше сделать. делаю на Д10 Например будет база данных на SQLite. в ней будет много таблиц. более 50шт Типа справочник. Содержать ID Name Id p...
Андрей Т 🐎
10
А если для werf организовать отдельный репозиторий, а сервисы из проекта подключить как симлинки? И симлинки в гитигнор добавить?
Dmitriy Andreev
13
Я короче решил скомпилировать Nim в js, я думал он сработает как обычный транслятор. По итогу он мне создал файл с расширением js, и туда поместил кучу кода Вопрос, что это з...
𝕾𝖍𝖆𝖉𝖊 <suspense>
9
Всем здравствуйте!) У меня такой вопрос. Есть два роута, роут1 и роут2. Они связаны с очередью some_queue. По задаче предполагается, что есть два паблиша. Паблиш1 отправляет...
Format
10
это группа токсиков или тех кто помогает?
Ибрагим
9
мы пытаемся подменить функцию, которая имеет меньше инструкций относительно функции, которой подменяем. https://www.reddit.com/r/jailbreakdevelopers/comments/w06ujy/mshookfun...
Óðinn
6
У кого-нибудь есть под рукой функция кодирования юникода, которая из фразы На русском сделает \u041d\u0430\u0020\u0440\u0443\u0441\u0441\u043a\u043e\u043c ?
Daniil Smolyakov
7
Карта сайта