Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/35.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js Docker容器中的Nodemon_Node.js_Docker_Docker Compose_Nestjs - Fatal编程技术网

Node.js Docker容器中的Nodemon

Node.js Docker容器中的Nodemon,node.js,docker,docker-compose,nestjs,Node.js,Docker,Docker Compose,Nestjs,我无法在docker容器中运行nodemon。下面是我得到的错误:[nodemon]内部监视失败:eNOPC:达到文件监视程序数量的系统限制,监视'/usr/src/app/dist' 这是我的图像文件: ## Use specific version of node FROM node:10.16 ## Get anything we may need for our container and run updates RUN apt-get update -qq && ap

我无法在docker容器中运行nodemon。下面是我得到的错误:
[nodemon]内部监视失败:eNOPC:达到文件监视程序数量的系统限制,监视'/usr/src/app/dist'

这是我的图像文件:

## Use specific version of node
FROM node:10.16

## Get anything we may need for our container and run updates
RUN apt-get update -qq && apt-get install -y build-essential

## CREATE DIRECTORY
WORKDIR /usr/src/app

# A wildcard is used to ensure both package.json AND package-lock.json are copied
# where available (npm@5+)
COPY package.json ./
COPY yarn.lock ./

## Install packages
RUN yarn install

# BUNDLE APP SOURCE
COPY . .

# EXPOSE TARGET PORT
EXPOSE 3001

CMD ["yarn", "start:dev"]
以下是本文的主要内容:

    build: ./server/
    volumes:
      - ./server/:/usr/src/app
      - /usr/src/app/node_modules
    ports: 
      - "3001:3001"
    restart: always
    depends_on:
      - db
下面是开始:dev:

cross-env NODE\u env=development tsc watch-p tsconfig.build.json--onSuccess\“nodemon dist/main.js\”

我已经尝试增加文件监视程序的限制,比如so
echo fs.inotify.max_user_watches=524288 | sudo tee-a/etc/sysctl.conf&&sudo sysctl-p
,但我还没有找到一种方法(在compose/Dockerfile中似乎不可能这样做)

docker容器统计数据
正常:

R ID        NAME                CPU %               MEM USAGE / LIMIT     MEM %               NET I/O             BLOCK I/O           PIDS

4050a37b3352        server     8.87%               324.6MiB / 15.57GiB   2.04%               79.1kB / 6.87kB     48MB / 1.26MB       50
这里是docker容器内的
ps aux

USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root         1  0.0  0.3 760916 57112 ?        Ssl  03:24   0:00 node /opt/yarn-v1.17.3/bin/yarn.js start:dev
root        29  0.0  0.0   4280   488 ?        S    03:24   0:00 /bin/sh -c cross-env NODE_ENV=development tsc-watch -p tsconfig.build.json --onSuccess "nodemon dist/main.js"
root        30  0.0  0.1 561684 21880 ?        Sl   03:24   0:00 /usr/local/bin/node /usr/src/app/node_modules/.bin/cross-env NODE_ENV=development tsc-watch -p tsconfig.build.json --onSuccess nodemon dist/
root        37  0.0  0.1 561768 23564 ?        Sl   03:24   0:00 /usr/local/bin/node /usr/src/app/node_modules/.bin/tsc-watch -p tsconfig.build.json --onSuccess nodemon dist/main.js
root        46 12.9  1.2 781216 196912 ?       Sl   03:24   2:09 /usr/local/bin/node /usr/src/app/node_modules/typescript/bin/tsc -p tsconfig.build.json --watch
root        70  0.0  0.0      0     0 ?        Z    03:24   0:00 [sh] <defunct>
root        71  0.3  0.5 765520 96992 ?        Sl   03:24   0:03 /usr/local/bin/node dist/main dist/main.js
root        82  0.0  0.0  18180  2924 pts/0    Ss+  03:25   0:00 bash
root        92  6.0  0.0  18180  3064 pts/1    Ss   03:40   0:00 bash
root        99  0.0  0.0  36632  2828 pts/1    R+   03:40   0:00 ps aux
USER PID%CPU%MEM VSZ RSS TTY STAT START TIME命令
根1 0.0 0.3 760916 57112?ssl03:24 0:00节点/opt/warn-v1.17.3/bin/warn.js开始:dev
根29 0.0 0.0 4280 488?S 03:24 0:00/bin/sh-c cross-env NODE_env=development tsc watch-p tsconfig.build.json--onSuccess“nodemon dist/main.js”
根30 0.0 0.1 561684 21880?Sl 03:24 0:00/usr/local/bin/node/usr/src/app/node_modules/.bin/cross-env node_env=development tsc watch-p tsconfig.build.json--onSuccess nodemon dist/
根37 0.0 0.1 561768 23564?Sl 03:24 0:00/usr/local/bin/node/usr/src/app/node_modules/.bin/tsc watch-p tsconfig.build.json--onSuccess nodemon dist/main.js
根46 12.9 1.2 781216 196912?Sl 03:24 2:09/usr/local/bin/node/usr/src/app/node_modules/typescript/bin/tsc-p tsconfig.build.json——监视
根70 0.0 0.0?Z 03:24 0:00[上海]
根71 0.3 0.5 765520 96992?Sl 03:24 0:03/usr/local/bin/node dist/main dist/main.js
根82 0.0 0.0 18180 2924分/0 Ss+03:25 0:00 bash
根92 6.0 0.0 18180 3064分/1 Ss 03:40 0:00 bash
根99 0.0 0.0 36632 2828分/1 R+03:40 0:00 ps辅助

如@Mihae所述,这将减慢您的开发速度,但出于学习目的,您需要修改dockerfile,因为这样的操作需要
特权
模式,并且仅在容器启动时可用,您可以在构建时修改它们

## Use specific version of node
FROM node:10.16
## Get anything we may need for our container and run updates
RUN apt-get update -qq && apt-get install -y build-essential
## Install packages
RUN yarn install


#creating entrypoint script with some debug log you can remove after debuging
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"]
建造:

docker build -t myimage .
现在,不要忘记传递
--privileged
,这是
fs.inotify.max\u user\u监视
更改其值所必需的

docker run --privileged -ti myimage

您不需要查看它的静态文件,服务器也不需要在这种情况下重新启动changes@Adiiidist不是一个静态文件,它由tsc watch监视,并在更改后重新编译如果我没有错,ng build之后我们得到了dist
dist
,我们不处理dist,但它已生成?@adii我不确定我是否理解。我没有在任何地方运行ng build。您可能会找到解决方案,但您很快就会意识到docker大大降低了开发速度。Docker非常适合发布应用程序,并在不同的上下文中一致地运行它们。但说到开发,我建议您在主机上进行开发,而不要考虑Docker。您的问题是docker machine(docker实际运行的底层虚拟机)。如果我是对的,你需要更改那里的设置,你不能只使用Dockerfile。谢谢你的回答。我一会儿就试试看!:)很高兴,如果有任何问题,请告诉我:)