Javascript Nodemon未使用docker容器重新启动
当我对app.js文件进行更改时,我已经尝试重新启动服务器两天了,但现在没有成功。我正在使用docker桌面和nodemon。试着按照老师的指导去做。 我被告知要完成这项工作,我应该使用音量,因此在终端中我运行:Javascript Nodemon未使用docker容器重新启动,javascript,node.js,docker,nodemon,Javascript,Node.js,Docker,Nodemon,当我对app.js文件进行更改时,我已经尝试重新启动服务器两天了,但现在没有成功。我正在使用docker桌面和nodemon。试着按照老师的指导去做。 我被告知要完成这项工作,我应该使用音量,因此在终端中我运行: docker build--tag=jade:最新版本。 docker run-v/Users/Jake/Documents/AdvancedWeb/JadeWeb/application/src:/src-p 8080:8080 jade 在第二排,我可能已经尝试了100种不同的语法
docker build--tag=jade:最新版本。
docker run-v/Users/Jake/Documents/AdvancedWeb/JadeWeb/application/src:/src-p 8080:8080 jade
在第二排,我可能已经尝试了100种不同的语法,这似乎是最接近工作的语法,也是对我来说最有意义的语法。它启动服务器,nodemon告诉我它正在等待更改
Dockerfile:
FROM node:13.3.0-stretch
EXPOSE 8080
WORKDIR /application
COPY package.json package.json
RUN npm install
COPY src src
CMD ["npm", "run", "start"]
// I have tried ALOT of variants of CMD aswell, like ["npm", "run", "start", "src/app.js"],
// ["npm", "run", "dev"], ["node", "src/app.js"] ["nodemon", "src/app.js"]
// ["npm", "start"]
{
"name": "application",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"start": "nodemon --legacy-watch src/app",
"dev": "nodemon src/app -L"
},
"devDependencies": {
"nodemon": "^2.0.2"
},
"keywords": [],
"author": "",
"license": "ISC",
"dependencies": {
"express": "^4.17.1"
}
}
package.json:
FROM node:13.3.0-stretch
EXPOSE 8080
WORKDIR /application
COPY package.json package.json
RUN npm install
COPY src src
CMD ["npm", "run", "start"]
// I have tried ALOT of variants of CMD aswell, like ["npm", "run", "start", "src/app.js"],
// ["npm", "run", "dev"], ["node", "src/app.js"] ["nodemon", "src/app.js"]
// ["npm", "start"]
{
"name": "application",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"start": "nodemon --legacy-watch src/app",
"dev": "nodemon src/app -L"
},
"devDependencies": {
"nodemon": "^2.0.2"
},
"keywords": [],
"author": "",
"license": "ISC",
"dependencies": {
"express": "^4.17.1"
}
}
所以我忘了关闭服务器一段时间,很明显它确实重新启动了,但启动过程大约需要10秒钟,然后服务器关闭几秒钟,然后重新启动。另外,在进行更改并保存app.js文件后,我得到
[nodemon]由于更改而重新启动…
7次,然后再重新启动
如果我只是执行
npm run start
nodemon按预期工作。(一次快速重启)所以我忘了关闭服务器一段时间,显然它确实重新启动了,但启动过程大约需要10秒钟,然后服务器关闭几秒钟,然后重新启动。另外,在进行更改并保存app.js文件后,我得到
[nodemon]由于更改而重新启动…
7次,然后再重新启动
如果我只是执行
npm run start
nodemon按预期工作。(一次快速重启)我也遇到了同样的问题。到处找。所有可能的解决办法。使用nodemon命令在脚本中将--legacy watch的-L附加到--watch。我的问题是docker-compose.yml。在应用程序服务中,具有卷属性。卷基本上将您在系统中编写的代码映射到容器环境。
所以,如果我写
卷数:-“/应用程序:/application”
这意味着nodejs应用所在的应用程序文件夹映射到容器中的/application。
现在,无论您在系统中做了什么更改,都将反映在容器代码中。由于nodemon在节点中已处于活动状态,它将重新启动!!我遇到了相同的问题。到处搜索。所有可能的解决方案。从为--legacy watch附加-L到使用nodemon命令在脚本中观察。我的问题在docker-compose.yml中您的应用程序服务具有卷属性。卷基本上将您在系统中编写的代码映射到容器环境。 所以,如果我写 卷:——”/应用程序:/application“ 这意味着nodejs应用所在的应用程序文件夹映射到容器中的/application。
现在,您在系统中所做的任何更改都将反映在容器代码中。由于nodemon在节点中已处于活动状态,它将重新启动!!您的
-v
选项的第二个参数是/src
,但是您声明了WORKDIR/application
;这些参数不一致。(您可能会发现直接在主机上运行npm run start
比使用冗长的Docker命令更容易,因为它需要与root等效的权限。)我考虑过一点,但我对文件系统的总体理解非常糟糕。我将尝试对这些部分进行一些更改。谢谢。使用docker是项目的一部分,但是是的,当我站在/application目录works中时,只运行npm run start。我尝试过的唯一使服务器启动的更改是删除WORKDIR行,但它没有解决问题。据我所知,-v
只是在我更改源代码时同步src文件。但是工作目录应该包括所有文件。但我甚至不确定。您使用的是哪个操作系统?-v
选项的第二个参数是/src
,但是u声明WORKDIR/application
;这些命令没有对齐。(您可能会发现直接在主机上运行npm run start
比使用冗长的Docker命令更容易,该命令需要与root用户同等的权限。)我考虑过一点,但我对文件系统的总体理解非常糟糕。我将尝试对这些部分进行一些更改。谢谢。使用docker是项目的一部分,但是是的,当我站在/application目录works中时,只运行npm run start。我尝试过的唯一使服务器启动的更改是删除WORKDIR行,但它没有解决问题。据我所知,-v
只是在我更改源代码时同步src文件。但是工作目录应该包括所有文件。但我甚至不确定。你正在使用哪个操作系统?