578просмотров
21 ноября 2023 г.
Score: 636
При запуске команды
find . -type f -name 'Dockerfile' | xargs hadolint --failure-threshold warning --format json > report.json CI выдавал следующий output
/proc/self/exe Начали проверять локально - та же самая ситуация - и exit code 123.
Сначала подумали, что это опять приколы MUSL и не GNU-утилит в alpine (find и grep), но проблема была даже при запуске hadolint без аргументов. При этом запуск контейнера от рута работает без ошибок. Потом грешили на cgroups v2 - что не хватает разрешений на запуск утилиты. В issues hadolint ничего подробного не нашлось.
Потом я запустил strace. В начале вывода увидел строчку
readlink("/proc/self/exe", "/usr/local/bin/hadolint", 4095) = 23
и стал копать в эту сторону.
readlink стоит в alpine из коробки в составе busybox (это multi-call binary).
Я поставил coreutils с GNU-той версией readlink и все завелось