如何使用docker容器在Windows上使用docker开发Reactjs?
到目前为止,我已经能够运行我的应用程序,但livereload不起作用 .
应用/结构
-
build
-
node_module
-
公众
-
src
-
docker-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
1 回答
这是Windows的一个已知限制(不要太担心,有一个很好的解决方法)
This is a known limitation for Docker on Windows host . 这是Docker's documentation关于这个问题的说法:
解决方法
但是, workaround 是使用轮询机制:
chokidar - node.js fs.watch / fs.watchFile / fsevents周围的一个整洁的包装器 .
nodemon - 监控node.js应用程序中的任何更改并自动重启服务器 - 非常适合开发 .
webpack - 如果观看对您不起作用,请尝试投票选项 . 观察不适用于VirtualBox中的NFS和计算机 .
等......
完整的Docker和React设置
就你的情况而言,我已经在Docker容器中启动react-create-app并且livereload功能非常完美 . 通过创建.env配置文件来获取enable chokidar polling .
这是我的配置(inspired by @haluvibe):
Dockerfile
docker-compose.yml
.env
脚本
docker-compose up -d
- 启动您的项目,它将在http://localhost:3000上提供 .docker-compose run --rm boilerplate /bin/bash
- 访问您的容器 .