docker build ...
ENTRYPOINT ["npm", "run", "start"]
Ну наверное я попробовал запустить Ваш код, прежде чем сюда писать
Он копируется вместе с остальным кодом
И с чего вы взяли что composer.json отсутствует?
Чистить кеш на следующем слое бесполезно - он останется на предыдущем слое и размер образа никак не уменьшиться, так как там Copy on Write
Все команды надо сгрупировать и выполнить в рамках одного слоя: