Node.js Chokidar不是';t在docker容器中拾取文件更改
我正在使用docker for mac版本1.12.0-rc2进行react项目。我的工作流程如下:Node.js Chokidar不是';t在docker容器中拾取文件更改,node.js,docker,docker-compose,Node.js,Docker,Docker Compose,我正在使用docker for mac版本1.12.0-rc2进行react项目。我的工作流程如下: OSX上的src/文件夹已装入容器 当开发人员在src/中修改文件时,它将转换为ES5并放置在public/中(这是有效的) 当文件在public/中更改时,另一个观察程序会触发热重新加载(在我的本地主机上工作,但不在容器中) 以下是步骤3中的步骤观察者代码: // root = "/src" const watcher = chokidar.watch(root, { usePolli
src/
文件夹已装入容器src/
中修改文件时,它将转换为ES5并放置在public/
中(这是有效的)public/
中更改时,另一个观察程序会触发热重新加载(在我的本地主机上工作,但不在容器中)// root = "/src"
const watcher = chokidar.watch(root, {
usePolling: true,
awaitWriteFinish: {
pollInterval: 100,
stabilityThreshold: 250
},
ignored: /\.(git|gz|map)|node_modules|jspm_packages|src/,
ignoreInitial: true,
persistent: true
})
.on("change", function fileWatcher(filename) {
const modulePath = filename.replace(`${root}/`, "");
wss.clients.forEach(function sendFileChange(client) {
send("filechange", modulePath, client);
});
if (cache[filename]) {
wss.clients.forEach(function sendCacheFlush(client) {
send("cacheflush", filename, client);
});
delete cache[filename];
}
});
和我的docker-compose.yml文件:
version: '2'
services:
wildcat:
build:
context: .
args:
JSPM_GITHUB_AUTH_TOKEN:
image: "nfl/react-wildcat-example:latest"
environment:
NODE_ENV: development
PORT: 3000
STATIC_PORT: 4000
COVERAGE:
LOG_LEVEL:
NODE_TLS_REJECT_UNAUTHORIZED: 0
CHOKIDAR_USEPOLLING: 'true'
volumes:
- ./src:/src/src
- ./api:/src/api
ports:
- "3000:3000"
- "4000:4000"
ulimits:
nproc: 65535
entrypoint: "npm run"
command: "dev"
在花了一两天的时间之后,我发现了这个问题:
ignored: /\.(git|gz|map)|node_modules|jspm_packages|src/,
导致chokidar忽略/src
,这是我将所有源代码复制到docker容器中的文件夹。我在Dockerfile和docker-compose.yml中将此路径改为/code
,一切正常