Как решить проблему ERR_EMPTY_RESPONSE в образе docker?

#javascript #reactjs #docker

Вопрос:

мой файл docker:

 # Use the official Node.js 10 image.
# https://hub.docker.com/_/node
FROM node:13.12.0-alpine

# set working directory
WORKDIR /app

# add `/app/node_modules/.bin` to $PATH
ENV PATH /app/node_modules/.bin:$PATH

# install app dependencies
COPY package.json ./
RUN npm install
# RUN npm install react-scripts@3.4.3 -g

# add app
COPY . /app


CMD ["npm", "start"]
 

Я покупаю:

 $ docker build . -t myapp
Sending build context to Docker daemon  2.051MB
Step 1/7 : FROM node:13.12.0-alpine
 ---> 483343d6c5f5
Step 2/7 : WORKDIR /app
 ---> Using cache
 ---> c731f744759f
Step 3/7 : ENV PATH /app/node_modules/.bin:$PATH
 ---> Using cache
 ---> e1f5f853c8c6
Step 4/7 : COPY package.json ./
 ---> Using cache
 ---> f831911acf6c
Step 5/7 : RUN npm install
 ---> Using cache
 ---> c18449857dd2
Step 6/7 : COPY . /app
 ---> Using cache
 ---> 4b99412d4725
Step 7/7 : CMD ["npm", "start"]
 ---> Using cache
 ---> e565a34838d5
Successfully built e565a34838d5
Successfully tagged myapp:latest
SECURITY WARNING: You are building a Docker image from Windows against a non-Win                                       dows Docker host. All files and directories added to build context will have '-r                                       wxr-xr-x' permissions. It is recommended to double check and reset permissions f                                       or sensitive files and directories.
 

Бежать:

запуск докера-p 3000 myapp

 > myapp-fe@0.1.0 start /app
> react-scripts start

ℹ 「wds」: Project is running at http://172.17.0.3/
ℹ 「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...

Compiled successfully!

You can now view rugvista-fe in the browser.

  Local:            http://localhost:3000
  On Your Network:  http://172.17.0.3:3000

Note that the development build is not optimized.
To create a production build, use npm run build.
 

Посещение: http://localhost:3000/ дает ERR_EMPTY_RESPONSE

Что я делаю не так?

Комментарии:

1. Есть ли разница, когда вы открываете его через 172.17.0.3:3000 вместо localhost?

2. Загрузка занимает больше времени, но результат тот же

3. @AydinK Я не читал сообщение, разница в том, что я также получаю тайм-аут

4. Если вы docker run -p 3000 , Docker выберет порт для вас; docker port расскажет вам, что это такое, но чаще docker run -p 3000:3000 всего вы выбираете свой собственный порт хоста (второй порт должен быть 3000, чтобы соответствовать процессу). В любом случае используйте http://localhost:... с номером порта.

Ответ №1:

Добавьте это в свой файл docker перед запуском npm

 EXPOSE 3000/tcp
 

Измените свой COPY . /app на COPY . .

Комментарии:

1. Тестируя это прямо сейчас, только один вопрос: если я хочу развернуть это позже, то, вероятно, это нужно удалить?

2. Так лучше ? Таким образом, вы не удаляете эту строку, если развертываете свое веб-приложение в контейнере docker, потому что это позволило внешнему миру подключиться к вашей сети docker.

3. К сожалению, это не сработало. Результат тот же

4. Я редактирую свой ответ, я не уверен на 100%. Добавьте RUN ls -lah , чтобы проверить, все ли у вас файлы