使用 Docker 在 Windows 上创建-react-app livereload
Create-react-app livereload with Docker on Windows
我正尝试在 Windows 10(Linux 容器模式)上 运行 docker 到 运行 React 开发工作区。我设法 运行 React 应用程序样板,但 livereloading 不工作。
这里有一些细节:
- Dockerfile 公开了 5000 和 35729 端口
- 通过
docker exec
和 create-react-app .
命令在容器内安装和创建文件
- WS 请求状态为 101(正确)
Docker 文件:
FROM node:latest
#installing react app first
RUN npm install -g create-react-app
VOLUME [ "/application" ]
#First example was EXPOSE 3000 35729
EXPOSE 3000
EXPOSE 35729
构建命令: docker build . -t react-image
运行 命令: docker run -d -p 3000:3000 -p 35729:35729 -v %PATH_TO_APP_FOLDER%\application:/application --name react-container react-image
执行命令: docker exec -it react-container bash
然后在容器里面:
cd application
create-react-app .
yarn start
输出:
Compiled successfully!
You can now view application in the browser.
Local: http://localhost:3000/ On Your Network:
http://172.17.0.2:3000/
Note that the development build is not optimized. To create a
production build, use yarn build.
打开后:http://localhost:3000一切似乎都正常。如果我从主机更改文件,容器内的文件也会更改(使用 cat App.js
检查)。但是更改文件不会触发 webpack 重新编译和 livereload。
有什么建议吗?
如果我需要提供更多详细信息,请告诉我。谢谢
这可以通过在 webpack 配置中将 watchOptions.poll
设置为 true 来解决:
References
我正尝试在 Windows 10(Linux 容器模式)上 运行 docker 到 运行 React 开发工作区。我设法 运行 React 应用程序样板,但 livereloading 不工作。
这里有一些细节:
- Dockerfile 公开了 5000 和 35729 端口
- 通过
docker exec
和create-react-app .
命令在容器内安装和创建文件 - WS 请求状态为 101(正确)
Docker 文件:
FROM node:latest
#installing react app first
RUN npm install -g create-react-app
VOLUME [ "/application" ]
#First example was EXPOSE 3000 35729
EXPOSE 3000
EXPOSE 35729
构建命令:
docker build . -t react-image
运行 命令:
docker run -d -p 3000:3000 -p 35729:35729 -v %PATH_TO_APP_FOLDER%\application:/application --name react-container react-image
执行命令:
docker exec -it react-container bash
然后在容器里面:
cd application
create-react-app .
yarn start
输出:
Compiled successfully!
You can now view application in the browser.
Local: http://localhost:3000/ On Your Network: http://172.17.0.2:3000/
Note that the development build is not optimized. To create a production build, use yarn build.
打开后:http://localhost:3000一切似乎都正常。如果我从主机更改文件,容器内的文件也会更改(使用 cat App.js
检查)。但是更改文件不会触发 webpack 重新编译和 livereload。
有什么建议吗?
如果我需要提供更多详细信息,请告诉我。谢谢
这可以通过在 webpack 配置中将 watchOptions.poll
设置为 true 来解决:
References