Reactjs 停靠的React应用程序未重新编译代码
我正在尝试将通过npx create react应用程序项目名称创建的基本CRA模板Dockerfile化,Dockerfile如下所示:Reactjs 停靠的React应用程序未重新编译代码,reactjs,docker,Reactjs,Docker,我正在尝试将通过npx create react应用程序项目名称创建的基本CRA模板Dockerfile化,Dockerfile如下所示: FROM node:latest WORKDIR /usr/src/client COPY ./ ./ RUN npm install EXPOSE 3000 CMD ["npm", "start"] 我通过运行docker build-t containername构建了该映像。 然后用docker ru
FROM node:latest
WORKDIR /usr/src/client
COPY ./ ./
RUN npm install
EXPOSE 3000
CMD ["npm", "start"]
我通过运行docker build-t containername构建了该映像。
然后用docker run-it-p 3000:3000 containername运行它
一切正常,容器运行成功,我可以看到网页在浏览器上运行
这里的问题是网页包热重新加载不起作用,导致应用程序在更改时无法重新编译
同样的问题已经提出了,但遗憾的是没有取得成功。问题似乎出现在Windows用户身上,但就我而言,我使用的是Mac
我已经试过了:
使用CHOKIDAR_USEPOLLING=true更新npm启动脚本
添加EXPOSE 35729,如前所述
非常感谢您的建议,谢谢 我认为webpack服务器没有看到任何新的更改,因为您修改了本地文件,但容器在运行时使用了它的副本,这是在构建时传递的。所以您应该将本地目录装载到容器中 我建议您使用docker compose将工作目录从主机装载到容器: docker-compose.yml
version: '3.4'
services:
app:
build: ./
volumes:
- ./src:/usr/src/client
ports:
- 3000:3000 # HOST:CONTAINER
command: npm start
或者在运行命令docker run中使用-v$pwd/src:/app/src…难以置信的是,问题是由工作目录命名引起的 为了修复它,我只需将它从/usr/src/client更改为/app,然后它开始重新编译,尽管我不知道为什么
FROM node:latest
WORKDIR /app
COPY ./ ./
RUN npm install
EXPOSE 3000
CMD ["npm", "start"]
这就是我真正在做的,相关的node、mongodb和redis服务也在启动-工作方式相同,但react应用程序不会重新编译您的完整运行命令,请更新我的回答谢谢您的回答,你实际上让我注意到我没有为它设置任何卷-我已经尝试使用docker命令,包括-v和直接在客户端根文件夹中设置的docker compose,但仍然没有重新编译它应该可以安装节点,并将其用作具有热重新加载和其他细节的本地开发环境;你不需要像Docker这样的隔离工具。@DavidMaze你能解释一下你的意思吗?为什么会是这样?我的想法是让所有东西都可以通过AWS ECS部署,您可以使用本地节点环境进行开发,将应用程序打包到Docker中,然后使用ECS进行部署。这一切都应该可以使用相同的代码库,在开发应用程序时使用npm run dev之类的工具,并且只有在需要运行集成测试或部署它时才引入Docker。