Словил интересный баг в GitLab CI, делюсь кейсом. 💡 Пайплайн, который работал годами, внезапно упал с ошибкой об отсутствующем пакете. При этом пакет был на месте в package.json, а Dockerfile давно никто не редактировал. Проблема: Для кэширования и ускорения последующих сборок было две задачи: - в одной задаче создавалась папка node_modules от пользователя root. - в следующей задаче она копировалась в образ, где работа шла от пользователя node. Но папка так и оставалась принадлежать root. Почему это работало несколько лет, а потом перестало — для меня до сих пор загадка. Скорее всего, старая версия Docker (или самого раннера) закрывала на это глаза. Решение: Проблема решилась очень просто — добавлением флага --chown=node:node к команде COPY в Dockerfile. Эта команда меняет владельца папки и файлов прямо в процессе копирования: COPY --chown=node:node ./node_modules ./node_modules Мораль: Не используйте root в Docker. Это и небезопасно, и может внезапно всё сломать, как показывает