Ваш Dockerfile должен работать, вы уверены, что внутри приложения больше ничего нет, может, package.json может переопределить его?
Я проверил его, и он работает правильно
$ echo $NODE_ENV
production
Также я бы предложил установить переменную NODE_ENV
во время работы контейнера, так как это было бы легче изменить, я знаю, что вы можете переопределить его в любом случае, если это необходимо, но установка его во время выполнения сделает ваш образ сменьше слоев.Вы можете использовать команду ниже
-e может использоваться для передачи переменной окружения и может быть передана несколько раз, если у вас более одной переменной
docker run -e NODE_ENV=production $IMAGENAME