Docker容器上的ReactJs开发

我怎样才能使用docker容器与Docker在Windows上开发Reactjs?

到目前为止,我已经能够运行我的应用程序,但livereload不起作用。

应用/结构

  • build立
  • node_module
  • 上市
  • SRC
  • 泊坞窗,compose.yml
  • Dockerfile

Dockerfile

FROM node:5.11.0-slim # Prepare app directory RUN mkdir -p /usr/src/app WORKDIR /usr/src/app/ # Install dependencies COPY package.json /usr/src/app/ RUN npm install --silent ADD . /usr/src/app/ CMD [ "npm", "start" ] 

泊坞窗,compose.yml:

 version: "2" services: frontend: container_name: "boilerplate" build: . environment: env_file: .env NODE_ENV: development ports: - '3000:3000' volumes: - .:/usr/src/app 

这是Windows已知的限制(不要太担心,有一个很好的解决方法)

这是Windows主机上Docker的已知限制 。 以下是Docker的文档中提到的问题:

inotify共享驱动器不起作用

目前,inotify在Docker for Windows上不起作用。 例如,当应用程序需要通过安装的驱动器读取/写入容器时,这将变得明显。 我们build议为您的框架或编程语言使用轮询function,而不是依赖文件系统inotify。

  • nodemon和Node.js的解决方法 – 如果使用Nodemon和Node.js,请尝试下面描述的fallback轮询模式: nodemon不重新启动节点应用程序
  • Docker for Windows在GitHub上的问题 – 查看问题共享驱动器上的Inotify不起作用

解决方法

但是, 解决方法是使用轮询机制:

  • chokidar – 一个围绕node.js fs.watch / fs.watchFile / fsevents的整洁包装。
  • nodemon – 监控node.js应用程序中的任何更改,并自动重新启动服务器 – 非常适合开发
  • webpack – 如果观看不起作用,请尝试使用轮询选项。 观看不适用于VirtualBox中的NFS和计算机。
  • 等等

完成Docker&React设置

只是为了你的情况,我已经开始了Docker容器中的react-create-app ,livereloadfunction非常完美。 问题是通过创build.envconfiguration文件启用chokidar轮询 。

这里是我的configuration( 灵感来自@haluvibe ):

Dockerfile

 FROM node:6.9.4 # Prepare app directory RUN mkdir -p /usr/src/app WORKDIR /usr/src/app/ # Install dependencies COPY package.json /usr/src/app/ RUN npm install --silent ADD . /usr/src/app/ EXPOSE 3000 CMD [ "npm", "start" ] 

泊坞窗,compose.yml

 version: "2" services: frontend: container_name: "boilerplate" build: . environment: env_file: .env NODE_ENV: development ports: - '3000:3000' volumes: - .:/usr/src/app 

.ENV

 CHOKIDAR_USEPOLLING=true 

脚本

  • docker-compose up -d – 启动您的项目,它将在http:// localhost:3000上可用。
  • docker-compose run --rm boilerplate /bin/bash – 访问您的容器。