node.js - Dockerizing 一个 React App : The app starts inside the container, 但它不能从暴露的端口访问

标签 node.js reactjs docker docker-compose

这是专门针对教程的问题: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/

相关文章:

node.js - 为什么libuv通过多线程进行DNS请求

reactjs - 无法在 react native 应用程序中使用 react 导航选项卡,从而出现找不到模块的问题?

javascript - 正确卸载 React 组件

bash - 通过bash脚本在Postgres docker容器上执行查询

angularjs - 对于多部分表单数据,request.body 始终为空

node.js - Openshift 的 MongoDB 大小限制是多少?

reactjs - React/Redux/Immutable - 关于子组件 HOC 策略的困惑

docker - 如何在 github 操作服务容器中运行命令?

docker - 如何使用 docker go-lang API 的 TaskLogs 端点?

node.js - V8 是否有任何预编译的二进制文件?