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

Вопрос про билд и containerfile/dockerfile, я хочу немного странного Допустим, я

хочу какой-то файл скопировать в образ, но не в исходном виде, а в каком-то нормализованном

Для примера, есть человекочитаемый ./foo.json с отступами, но я не хочу его копировать в образ как есть (например, он слишком большой по сравнению с компактной версией), а хочу сначала пропустить его через jq --compact-output . и уже результат этой команды сохранить в качестве слоя

Или как альтернативный пример — пропустить некоторый конфиг через grep -v, чтобы убрать кучу лишних комментариев, которые нужны в исходниках, но совершенно избыточные внутри образа

Это возможно?

UPD: почему не внешний инструмент: мне нужен самодостаточный докерфайл, я не хочу, чтобы сборка образа зависела ещё от какой-то внешней инфраструктуры

UPD: мне подсказали сделать это через multistage. Да, можно, должно сработать, но если есть способ сделать проще и лаконичнее — я бы предпочёл его

9 ответов

64 просмотра

Привет мултестейдж куда уже проще

Ofee-Oficsu Автор вопроса
Aleksey
Привет мултестейдж куда уже проще

Он требует бойлерплейта. В идеале, хотелось бы, чтобы для RUN была какая-то опция, которая умела бы скармливать на вход своей команды файл из репозитория, не скопированный в образ

Ofee Oficsu
Он требует бойлерплейта. В идеале, хотелось бы, чт...

так ты копируешь такой файлик оригинальный потом в run используешь его (сжимаешь) и создаешь нужный файлик, удаляя шаблон потом эти файлики можно целиком скорпировать в другое место (образ)

Мультистейдж для тебя будет проще делаешь что-то типо: FROM stedolan/jq COPY foo.json /tmp/foo.json RUN jq .. > /tmp/final.json FROM main-image:blabla COPY --from=0 /tmp/final.json . и погнал

Solyar
Мультистейдж для тебя будет проще делаешь что-то т...

Альтернативный вариант собери свой baseimage со всеми инструментами что тебе нужны и в процессе сборки вызывай jq

Ofee-Oficsu Автор вопроса
Solyar
Мультистейдж для тебя будет проще делаешь что-то т...

Я же написал, что знаю, как это делается, меня смущает лишь бойлерплейтность решения. Вы же согласитесь, что гипотетический RUN --stdin-file=foo.json jq -c . был бы лучшим решением?

Ofee Oficsu
Я же написал, что знаю, как это делается, меня сму...

Возможно, никогда не задумывался о таких оптимизациях

Ofee Oficsu
Я же написал, что знаю, как это делается, меня сму...

Нет, необязательно. Самое лаконичное, но не самое тривиальное или легкочитаемое. Там выше верно пишут что чем проще и предсказуемее тем лучше. Простота настолько чтобы любой джун даже через 3 года поздно ночью мог сразу же разобраться и починить. ) Но это мне так кажется, могу ошибаться)

Ofee-Oficsu Автор вопроса
Mars
Нет, необязательно. Самое лаконичное, но не самое ...

Правда считаете, что COPY --from=0 /tmp/final.json . и ещё 3 дополнительные строчки в начале файла будут понятнее, чем одна RUN --stdin-file=foo.json jq -c .?

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

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

30500 за редактор? )
Владимир
47
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
вы делали что-то подобное и как? может есть либы готовые? увидел картинку нокода, где всё линиями соединено и стало интересно попробовать то же в ddl на lua сделать. решил с ч...
Victor
8
Подскажите пожалуйста, как в CustomDrawCell(Sender: TcxCustomGridTableView; ACanvas: TcxCanvas; AViewInfo: TcxGridTableDataCellViewInfo; var ADone: Boolean); получить наз...
A Z
7
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Как передать управляющий символ в открытую через CreateProcess консоль? Собсна, есть процедура: procedure TRedirectThread.WriteData(Data: OEMString); var Written: Cardinal;...
Serjone
4
Он в одиночку это дело запилил или была какая-то команда?
Aquinary
12
~ 2m21s  nix shell github:nixos/nixpkgs#stack ~  stack ghc -- --version error: … while calling the 'derivationStrict' builtin at /builtin/derivation.nix:...
Rebuild your mind.
6
Всем привет, нужна как никогда, нужна помощь с IO в загрузчике. Пишу в code16 после установки сегментных регистров, пишу вывод символа. Пробовал 2 варианта: # 1 mov $0x0E, %a...
Shadow Akira
14
Карта сайта