首页 文章

在docker容器上进行ReactJs开发

提问于
浏览
7

如何使用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 回答

  • 8

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

    This is a known limitation for Docker on Windows host . 这是Docker's documentation关于这个问题的说法:

    共享驱动器上的inotify不起作用目前,inotify在Docker for Windows上不起作用 . 例如,当应用程序需要跨安装的驱动器读取/写入容器时,这将变得明显 . 我们建议您使用轮询功能来构建框架或编程语言,而不是依赖于文件系统inotify . nodemon和Node.js的解决方法 - 如果你将nodemon与Node.js一起使用,请尝试这里描述的回退轮询模式:nodemon没有重启节点应用程序GitHub上的Docker for Windows问题 - 请参阅问题共享驱动器上的Inotify不起作用


    解决方法

    但是, 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

    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" ]
    

    docker-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 - 访问您的容器 .

相关问题