node.js - 增加 Node docker 镜像中的观察者

标签 node.js docker dockerfile file-watcher github-actions

需要在 docker 镜像中增加观察者,因为它在 expo 发布时失败并出现错误

[11:39:08] Error: ENOSPC: System limit for number of file watchers reached, watch '/__w/mevris-client-app-products/mevris-client-app-products/node_modules/update-notifier/node_modules/camelcase'
[11:39:08]     at FSWatcher.start (internal/fs/watchers.js:165:26)
[11:39:08]     at Object.watch (fs.js:1258:11)
[11:39:08]     at NodeWatcher.watchdir (/__w/mevris-client-app-products/mevris-client-app-products/node_modules/metro/node_modules/sane/src/node_watcher.js:159:22)
[11:39:08]     at Walker.<anonymous> (/__w/mevris-client-app-products/mevris-client-app-products/node_modules/metro/node_modules/sane/src/common.js:109:31)
[11:39:08]     at Walker.emit (events.js:198:13)
[11:39:08]     at /__w/mevris-client-app-products/mevris-client-app-products/node_modules/walker/lib/walker.js:69:16
[11:39:08]     at go$readdir$cb (/__w/mevris-client-app-products/mevris-client-app-products/node_modules/@react-native-community/cli/node_modules/graceful-fs/graceful-fs.js:187:14)
[11:39:08]     at FSReqWrap.args [as oncomplete] (fs.js:140:20)

在 Dockerfile 中添加了以下几行
RUN echo "fs.inotify.max_user_instances=524288" >> /etc/sysctl.conf && sysctl -p

构建时导致此错误sysctl: setting key "fs.inotify.max_user_watches": Read-only file system
我需要在 Github Actions 中使用那个 docker 镜像

文件
FROM node:10

RUN echo "fs.inotify.max_user_instances=524288" >> /etc/sysctl.conf
RUN echo "fs.inotify.max_user_watches=524288" >> /etc/sysctl.conf
RUN echo "fs.inotify.max_queued_events=524288" >> /etc/sysctl.conf

RUN apt-get -qq update && apt-get -qq -y install bzip2

RUN yarn global add @bluebase/cli && bluebase plugins:add @bluebase/cli-expo && bluebase plugins:add @bluebase/cli-web

RUN bluebase plugins

RUN npm i -g expo-cli

COPY entrypoint.sh /entrypoint.sh

ENTRYPOINT ["sh", "/entrypoint.sh"]

最佳答案

我在 Mac OSX(不是 docker-for-mac)上运行 Docker 时遇到了同样的问题。

基于与内核主机共享sysclt设置的前提,
我解决了对 docker-machine (boot2docker) 执行 ssh 并更改那里的设置的问题。

$ docher-machine ssh
$ echo fs.inotify.max_user_watches=524288 | sudo tee -a /etc/sysctl.conf
$ sudo sysctl -p

关于node.js - 增加 Node docker 镜像中的观察者,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58559074/

相关文章:

node.js - 安装并吞掉插件

带有 docker 的 mysql_config_editor

docker - 如何使用dockerfile RUN --mount挂载本地文件夹?

docker - 如何理解Docker构建过程提供的输出?

javascript - 服务 worker 中的缓存未定义

node.js - 从 Twitter API 检索实时推文

php - 为什么 mysql CLI 可以连接,而 WordPress 却不能?

docker - 通过 Dockerfile 在 Ubuntu 上安装 Google Chrome 并点击地理区域

node.js - 存储聊天消息的推荐方法 (node.js)

linux - 了解 docker 端口映射