РазвертываниеУстранение неполадокИзменения в Dockerfile не применяются

Мои изменения в Dockerfile не применяются

В вашем репозитории есть Dockerfile, вы его отредактировали, но сборка, которую запускает Lizard, не соответствует вашему файлу.

Что это значит

Платформа сочла Dockerfile репозитория неполным и сгенерировала новый с помощью lizardpack, вместо того чтобы использовать ваш файл в исходном виде.

Почему это может произойти

Эта проверка выполняется только для сервисов с источником GitHub. Загрузки (lizard up) всегда используют корневой Dockerfile как есть.

При источнике GitHub Lizard считает корневой Dockerfile неполным, если выполняются оба условия:

  • в нём есть COPY каталога build, dist, out, .next или public, записанного без завершающего слеша, например COPY dist /usr/share/nginx/html;
  • в нём нет строки RUN, которая начинается с npm, yarn, pnpm, bun, pip, pip3, bundle, cargo, go build, mvn или gradle.

Lizard исходит из того, что эти артефакты собраны вне образа, и lizardpack создаёт заменяющий Dockerfile, включающий недостающий шаг сборки.

Ещё две настройки также обходят корневой Dockerfile вашего репозитория. Если задан dockerfilePath, Lizard использует этот файл как есть. Если он не задан, то заданный buildCommand или startCommand заставляет Lizard синтезировать Dockerfile из этих команд.

Возможные решения

Добавьте настоящий шаг сборки

Если хотите, чтобы ваш Dockerfile использовался как есть, добавьте в него реальный шаг сборки вместо копирования готового результата:

RUN npm ci && npm run build

Или заставьте использовать файл дословно

Задайте dockerfilePath. Он имеет приоритет над командами сборки и запуска при сборке образа, но заданный startCommand всё равно заменяет CMD из вашего Dockerfile во время выполнения, поэтому очистите оба поля в том же обновлении. Пустое значение очищает поле:

lizard service set api --set buildCommand= --set startCommand= --set dockerfilePath=Dockerfile

См. также

Изменение этих полей сборки может запустить сборку. Проверьте lizard events перед отправкой очередного redeploy, чтобы не запустить вторую сборку случайно.

Обновлено