Проблема в том, что режим разработки не будет работать, если он не является интерактивным терминалом.
Измените команду docker, чтобы включить интерактивный терминал: docker run -it docker -p 3000:3000 lucki
Устранение неполадок в каноническом режиме
Убедитесь, что код работает без docker
Работает ли npm start
в командной строке?
Отображение отладочной информации
Добавьте DEBUG=*
в качестве переменной среды внутри вашего контейнера.
В вашем Dockerfile
добавьте
ENV DEBUG=*
Или в командной строке добавьте -e 'DEBUG=*'
Это может помочь определить сообщения об ошибках, которые каким-то образом проглатываются
Запустить узел напрямую
Вместо запуска npm start
, запустите файл напрямую. например,
CMD ["node", "index.js"]
Попробуйте запустить другой docker контейнер
Если это проблема с настройкой docker, запуск известного хорошего контейнера может помочь вам обнаружить его.
docker run --rm -it node:alpine
Улучшения
Ваш Dockerfile
также можно немного упростить.
FROM node:alpine
WORKDIR /app
COPY package*.json ./
RUN npm install --production
COPY . .
CMD ["npm", "start"]
mkdir
не требуется, так как WORKDIR
автоматически создает каталог package*.json
также скопирует package-lock.json
--production
, пропустит установку devDependencies
Установка последней полной команды COPY
улучшит кэш (вам не придется перезапускать npm install
, если ваши зависимости не изменились)
Вы также можете использовать Tini
RUN apk add --no-cache tini
ENTRYPOINT ["tini", "--"]