Увеличьте количество наблюдателей в изображении докера узла - PullRequest
0 голосов
/ 25 октября 2019

Необходимо увеличить количество наблюдателей в образе докера, так как при публикации на выставке происходит сбой с ошибкой

[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

Dockerfile

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"]

1 Ответ

0 голосов
/ 25 октября 2019

Из этого выдает / 24 , а из этого выдает / 628

Вам необходимо увеличить параметр fs.inotify.max_user_watchesparament на хосте. Например, вы можете создать файл конфигурации в /etc/sysctl.d. Пример /etc/sysctl.d/crashplan.conf с содержимым:

fs.inotify.max_user_watches = 1048576

Вы не можете изменить во время сборки, если это не повлияет, а также не позволит вам во время сборки.

Чтобы избежать этой ошибки, установите ее во время выполнения в точке входа.

FROM node:10.16

# set inotify and start the node application, replace yar with your command
RUN echo "#!/bin/sh \n\
echo "fs.inotify.max_user_watches before update" \n\
cat /etc/sysctl.conf\n\
echo "______________________________________________updating inotify ____________________________________" \n\
echo fs.inotify.max_user_watches=524288 | tee -a /etc/sysctl.conf && sysctl -p \n\
echo "updated value is" \n\
cat /etc/sysctl.conf | grep fs.inotify \n\
exec yarn start:dev \
" >> /usr/local/bin/entrypoint.sh

RUN chmod +x /usr/local/bin/entrypoint.sh

# EXPOSE TARGET PORT
EXPOSE 3001
ENTRYPOINT ["/usr/local/bin/entrypoint.sh"]

...