#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
, чтобы проверить, все ли у вас файлы