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

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

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

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

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

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

Lizard использует Dockerfile репозитория как есть только на пути автоопределения lizardpack, если в нём есть настоящий шаг сборки — строка RUN <package-manager>. Dockerfile, который лишь копирует предварительно собранные артефакты (COPY dist/, build/, out/, .next/, public/) без шага RUN, считается неполным — подразумевается, что эти артефакты собраны вне образа. В таком случае lizardpack создаёт заменяющий Dockerfile, включающий недостающий шаг сборки.

Это касается только пути автоопределения lizardpack. Если для сервиса заданы buildCommand или startCommand, Lizard синтезирует Dockerfile из этих команд и вообще не смотрит на Dockerfile в репозитории.

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

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

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

RUN npm ci && npm run build

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

Очистите переопределения сборки и запуска, затем задайте dockerfilePath в том же обновлении. Переопределения имеют приоритет над путем к файлу:

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

См. также

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