не может запустить приложение реакции с docker контейнером - PullRequest
0 голосов
/ 05 апреля 2020

У меня есть реагирующее приложение, которое просто показывает сообщение hello-world, но мне нравится запускать приложение через docker -контейнер, но с этой проблемой. После этого сообщения процесс остановился без запуска приложения ..

ℹ 「wds」: Project is running at http://172.17.0.2/
ℹ 「wds」: webpack output is served from
ℹ 「wds」: Content not from webpack is served from /app/public
ℹ 「wds」: 404s will fallback to /
 Starting the development server...

Не могу понять, что мне делать, потому что у меня очень маленькое приложение с базовым c кодом в Dockerfile

FROM node:alpine
RUN mkdir /app
COPY . /app
WORKDIR /app
COPY package.json ./
RUN npm install
CMD ["npm", "start"]

Нужно ли устанавливать webpack-dev-server, я пытался, но получил ошибку версии, например, «сервер, добавленный вручную», имеет более низкую версию, чем сервер. поэтому я переустановил webpack-dev-server.

Я создал приложение с помощью 'create-реагировать-приложение', поэтому я думаю, что каждая зависимость управляется автоматически .. У кого-нибудь есть идеи, как я могу решить проблема .. заранее спасибо (BTW ..)

Команда, которую я использую для сборки: docker build . -t lucki

Команда для запуска образа: docker run -p 3000:3000 lucki

это структура проекта: enter image description here

после добавления DEBUG = * в Dockerfile, я получаю ответ: enter image description here

1 Ответ

2 голосов
/ 05 апреля 2020

Проблема в том, что режим разработки не будет работать, если он не является интерактивным терминалом.

Измените команду 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", "--"]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...