在docker容器内使用create-react-app运行开发服务器

Jav*_*ian 3 docker create-react-app

我正在尝试在docker容器中运行create-react-app的开发服务器并让它重新编译并将更改的应用程序代码发送到客户端以进行开发,但它没有从docker容器内部获取更改.

(当然,我将应用程序的工作目录作为容器的卷.)

有没有办法让这项工作?

Jav*_*ian 10

实际上,我在这里找到了答案.显然,create-react-app使用chokidar来监视文件更改,它有一个标志CHOKIDAR_USEPOLLING来使用轮询来监视文件更改.所以CHOKIDAR_USEPOLLING=true npm start应该解决问题.至于我,我CHOKIDAR_USEPOLLING=true在docker容器的环境变量中设置并启动了容器.

  • 这修复了但热重载有显着延迟,我的 CPU 使用率高于 60% (4认同)

Jul*_*era 9

另一个答案中建议的轮询会导致更高的 CPU 使用率并迅速耗尽电池电量。您不需要,CHOKIDAR_USEPOLLING=true因为文件系统事件应该传播到容器。最近,即使您的主机运行 Windows,这也应该可以工作:https : //docs.docker.com/docker-for-windows/release-notes/#docker-desktop-community-2200(搜索“inotify”)。

但是,当使用 Docker for Mac 时,这种机制有时似乎会失败:https : //github.com/docker/for-mac/issues/2417#issuecomment-462432314

重新启动 Docker 守护进程对我有帮助。


Bsi*_*enn 6

对于react-script v5.0.0 及以上版本,命令WATCHPACK_POLLING=true改为CHOKIDAR_USEPOLLING=true