这是专门针对教程的问题:http://mherman.org/blog/2017/12/07/dockerizing-a-react-app/#.Wv3u23WUthF作者:Michael Herman
问题:应用程序在容器内启动,但无法从我刚刚公开的端口访问 -p 3000:3000
。当浏览到 localhost:3000
时出现This site can't be reached 错误
docker-compose.yaml
version: '3.5'
services:
sample-app:
container_name: sample-app
build:
context: .
dockerfile: Dockerfile
volumes:
- '.:/usr/src/app'
- '/usr/src/app/node_modules'
ports:
- '3000:3000'
environment:
- NODE_ENV=development
Dockerfile
# base image
FROM node:9.6.1
# set working directory
RUN mkdir /usr/src/app
WORKDIR /usr/src/app
# add `/usr/src/app/node_modules/.bin` to $PATH
ENV PATH /usr/src/app/node_modules/.bin:$PATH
# install and cache app dependencies
COPY package.json /usr/src/app/package.json
RUN npm install --silent
# RUN npm install react-scripts@1.1.1 -g --silent # Uncomment to silent logs
RUN npm install react-scripts@1.1.1 -g
# start app
CMD ["npm", "start"]
#CMD tail -f /usr/src/app/README.md
###################################
# To Run sample app:
# docker run -it -v ${PWD}:/usr/src/app -v /usr/src/app/node_modules -p 3000:3000 --rm sample-app
Docker 日志:https://docs.google.com/document/d/14LRCgjMLAkmdMiuedxAW2GWUAtxmWeJQCNQB2ezdYXs/edit
在运行组合容器或单个容器之后。它显示启动成功,但之后没有任何内容。
当我 docker exec 进入容器时,$ curl localhost:3000
返回正确的 index.html 页面
我使用以下任一方式启动容器:
$ docker run -it -v ${PWD}:/usr/src/app -v /usr/src/app/node_modules -p 3000:3000 --rm sample-app
<-(图像 sample-app
存在)
或
$ docker-compose up
最佳答案
在排除所有其他因素后,我假设您的应用程序正在监听本地主机。 Localhost 的范围是容器本身。因此,为了能够连接到它,您必须在容器内。
要解决此问题,您需要让您的应用程序改为监听 0.0.0.0。
关于node.js - Dockerizing 一个 React App : The app starts inside the container, 但它不能从暴露的端口访问,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50400697/