描述Bug
更改“/stories”中的文件(在已安装的驱动器中)时,Webpack不会在Docker容器中重新编译(* 注意:这甚至还不是一个热重载问题 *)。我有一个类似的React设置,在React中,监视是通过指定watchOptions.poll解决的,而热重载是通过Map适当的端口解决的。
重现
复制可能没有帮助,因为它只复制容器内的内容?我的Dockerfile是以以下方式创建的:
文件结构
react_setup
- some files specific to react configuration
storybook_setup
- main.js
Dockerfile
entrypoint.sh
停靠文件
FROM node:14.17.1-alpine3.13
RUN mkdir -p /projecttmp/frontend && cd /projecttmp/frontend && npm init -y
COPY react_setup/ /projecttmp/frontend/
RUN cd /projecttmp/frontend \
&& npm i webpack webpack-cli webpack-dev-server webpack-bundle-tracker source-map-loader --save-dev \
&& npm i @babel/core@7.13.10 babel-loader@8.2.2 @babel/preset-env@7.13.10 @babel/preset-react@7.12.13 react@17.0.1 react-dom@17.0.1 react-responsive node-sass@6.0.0 --save-dev \
&& npm i -D @pmmmwh/react-refresh-webpack-plugin react-refresh \
&& npm i storybook@6.2.9 storybook-css-modules-preset --save-dev \
&& npm i -D @storybook/preset-scss css-loader sass sass-loader@10.1.1 style-loader mini-css-extract-plugin \
&& npx sb init
COPY storybook_setup/ /projecttmp/frontend/.storybook/
WORKDIR /project
EXPOSE 6006 8080
COPY entrypoint.sh /usr/local/bin/entrypoint.sh
ENTRYPOINT /usr/local/bin/entrypoint.sh
entrypoint.sh
# !/bin/ash
(mv /projecttmp/frontend /project/ || mv /projecttmp/frontend/node_modules /project/frontend/) # if failed to move frontend-tmp due to directory non-empty, attempt to update node_modules
(cd /project/frontend && npm run dev) & (cd /project/frontend && npm run storybook) # serve react and storybook
main.js
module.exports = {
stories: ["../src/**/*.stories.mdx", "../src/**/*.stories.@(js|jsx|ts|tsx)"],
addons: ["@storybook/addon-links", "@storybook/addon-essentials"],
webpackFinal: async (config, { configType }) => {
config.watchOptions.poll = 500;
return config;
},
};
容器启动后我的package.json
文件
{
"name": "frontend",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"dev": "webpack serve",
"build": "webpack --mode production",
"test": "echo \"Error: no test specified\" && exit 1",
"storybook": "start-storybook -p 6006",
"build-storybook": "build-storybook"
},
"keywords": [],
"author": "",
"license": "ISC",
"devDependencies": {
"@babel/core": "^7.13.10",
"@babel/preset-env": "^7.13.10",
"@babel/preset-react": "^7.12.13",
"@pmmmwh/react-refresh-webpack-plugin": "^0.4.3",
"@storybook/addon-actions": "^6.2.9",
"@storybook/addon-essentials": "^6.2.9",
"@storybook/addon-links": "^6.2.9",
"@storybook/preset-scss": "^1.0.3",
"@storybook/react": "^6.2.9",
"babel-loader": "^8.2.2",
"css-loader": "^5.2.6",
"mini-css-extract-plugin": "^1.6.0",
"node-sass": "^6.0.0",
"react": "^17.0.1",
"react-dom": "^17.0.1",
"react-refresh": "^0.10.0",
"react-responsive": "^8.2.0",
"sass": "^1.35.1",
"sass-loader": "^10.1.1",
"source-map-loader": "^1.1.3",
"storybook": "^6.2.9",
"storybook-css-modules-preset": "^1.1.1",
"style-loader": "^2.0.0",
"webpack": "^4.46.0",
"webpack-bundle-tracker": "^1.1.0",
"webpack-cli": "^4.7.2",
"webpack-dev-server": "^3.11.2"
},
"dependencies": {}
}
系统
请将npx sb@next info
的结果粘贴到此处。
Docker容器环境
Environment Info:
System:
OS: Linux 5.4 Alpine Linux
CPU: (4) x64 Intel(R) Core(TM) i5-7200U CPU @ 2.50GHz
Binaries:
Node: 14.17.1 - /usr/local/bin/node
Yarn: 1.22.5 - /usr/local/bin/yarn
npm: 6.14.13 - /usr/local/bin/npm
主机为Windows
其他上下文
我还在容器内运行了cat /proc/sys/fs/inotify/max_user_watches
,可以确认max_user_watches
是524288。
除了在module.exports
中添加了webpackFinal
之外,故事书设置中没有任何修改。我想知道它是否与#14984有关,但我个人很难理解围绕它的讨论。
1条答案
按热度按时间pftdvrlh1#
我也有同样的问题。
它发生在Windows上的Docker上,但不使用Linux上的Docker。
我试过SB版本
6.3.6
,6.2.9
和6.0.28
,它们都有同样的问题。