docker - Nodemon 不会在我的 docker 容器上重新加载我的 app.js
问题描述
我决定在容器中使用 Express 制作服务器并安装 nodemon 以监视和重新加载我的代码修改,但是由于某种原因,当我修改代码时容器上的 nodemon 不会重新加载。我该如何解决?
我的 Dockerfile:
FROM node:14-alpine
WORKDIR /usr/app
RUN npm install -g nodemon
COPY . .
EXPOSE 3000
CMD ["npm","start"]
我的 package.json:
{
"name": "prog-web-2",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1",
"start": "nodemon app.js"
},
"repository": {
"type": "git",
"url": "git+https://github.com/willonf/prog-web-2.git"
},
"keywords": [],
"author": "",
"license": "ISC",
"bugs": {
"url": "https://github.com/willonf/prog-web-2/issues"
},
"homepage": "https://github.com/willonf/prog-web-2#readme",
"dependencies": {
"express": "^4.17.1"
}
}
我的 app.js:
const express = require("express")
const app = express()
app.get("/", (req, res) => {
res.end("Hello, World!")
});
app.listen(3000);
解决方案
您正在将所有文件复制到 docker 容器中。
COPY . .
因此,当您修改本地文件时,您并没有修改 docker 容器内的文件,并且 docker 容器内的 nodemon 无法检测到任何更改。
可以使用Docker Volumes获得您想要的行为。您可以配置它们,以便 docker 容器与主机系统共享工作目录。如果您更改主机上的文件,nodemon 将在这种情况下检测到更改。
这篇文章中的答案展示了如何实现这一目标的示例。
推荐阅读
- database - 复合索引比单索引慢多少
- windows - Powershell - 如何使用 Get-WindowsOptionalFeature 命令“打开和关闭 Windows 功能”
- python - Twitter 流媒体 - 查找 10 大热门话题 | PySpark
- javascript - 从http post请求下载文件 - Angular 6
- java - 如何在 Spring Boot 中测试组件/bean
- redhat-datavirt - JDV中是否存在函数NTILE
- jquery - jquery使用parseFloat和toFixed
- javascript - lodash 链式方法中的当前链
- javascript - OnEdit() 谷歌脚本触发器在函数中的使用
- android - 你如何让 Android TextView 向右展开?