【发布时间】:2019-05-25 02:17:15
【问题描述】:
我们将使用 dockersetup 开发一个 react pwa,并在部署到 master 分支期间将应用程序发布到 gitlab 页面上。
我在 Windows 设备上工作,无法在开发模式下获得热重载功能。每当我进行一些更改时,代码都不会重新编译。每次更改我都必须docker-compose up --build。
有什么方法可以让热重载在windows/docker/create-react-app 设置上工作?
在 package.json 之后:
{
"name": "Appname",
"version": "0.1.0",
"private": true,
"dependencies": {
"react": "^16.7.0",
"react-dom": "^16.7.0",
"react-scripts": "2.1.1"
},
"scripts": {
"start": "react-scripts start",
"build": "react-scripts build",
"buildandserver": "react-scripts build && serve -s build",
"test": "react-scripts test",
"eject": "react-scripts eject"
},
"eslintConfig": {
"extends": "react-app"
},
"browserslist": [
">0.2%",
"not dead",
"not ie <= 11",
"not op_mini all"
]
}
现在是用于 Dev-Setup 的 Dockerfile:
FROM node:9.6.1
# set working directory
RUN mkdir /usr/src/app
WORKDIR /usr/src/app
# add `/usr/src/app/node_modules/.bin` to $PATH
ENV PATH /usr/src/app/node_modules/.bin:$PATH
# install and cache app dependencies
COPY package.json /usr/src/app/package.json
RUN npm install
RUN npm install react-scripts@1.1.1 -g
# start app
CMD ["npm", "start"]
至少还有用于 dev-setup 的 docker-compose:
version: '3.5'
services:
App-Name:
container_name: App-Name
build:
context: .
dockerfile: devsetup/Dockerfile
volumes:
- './:/usr/src/app'
- '/usr/src/app/node_modules'
ports:
- '3000:3000'
environment:
- NODE_ENV=development
我正在设备上运行 docker for windows。 我希望任何人都可以帮助我离开这里...谢谢!
【问题讨论】:
-
您应该将
command添加到docker-compose下的App-Name服务,这样每次docker 启动时,您都会运行npm start。npm start是启动开发服务器并等待更改发生的人。所以你必须做一次docker-compose up并完成。 -
我在
container_name: App-Name下添加了command: "npm start",但是当我更改某些内容时它仍然无法编译。我也是 docker/docker-compose 的新手。我们是一个项目组,我没有设置 docker 的东西。这样做的人正在使用 mac/linux :) -
我在使用 angularcli dockerproject 时也遇到了这种问题。为了解决这个问题,我在 package.json 文件中使用了
dockerstart": "npm install; ng serve --host 0.0.0.0 --poll=1000。也许我的反应问题有类似的解决方案 -
看起来罪魁祸首是
file change events are not getting notified inside the docker,所以devserver永远不知道何时重新编译。尝试将poll: true添加到您的webpack config,如webpack.js.org/configuration/watch 中所述。那可能对你有帮助。还要将npm start命令保留在docker-compse中,这样您就不必每次都构建容器。 -
通过
"start": "CHOKIDAR_USEPOLLING=true react-scripts start",修改package.json中的startscript来修复它
标签: windows reactjs docker create-react-app hot-reload