【发布时间】:2022-01-07 21:01:53
【问题描述】:
我有一个节点应用程序的图像。在 package.json 我有 nodemon。我想通过更新主机源来运行容器,其中nodemon 将随着主机 src 的更改而热重载。所以我使用的是绑定挂载。
package.json 来自节点应用程序。
{
"name": "backend",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1",
"start": "nodemon app.js"
},
"author": "MOI",
"license": "ISC",
"dependencies": {
"body-parser": "^1.19.0",
"express": "^4.17.1",
"mongoose": "^5.10.3",
"morgan": "^1.10.0"
},
"devDependencies": {
"nodemon": "^2.0.4"
}
}
Dockerfile
FROM node
WORKDIR /app
COPY package.json .
RUN npm install
COPY . .
EXPOSE 80
CMD ["npm", "start"]
然后我用这个运行容器,当我检查日志时,我看不到nodemon 正在运行。几乎就像它根本没有安装一样。有什么想法可以解决这个问题吗?
docker run --name goals-backend -v /Users/path/for/bind/mount/backend:/app \
-v logs:/app/logs -v /app/node_modules -d --rm \
-p 80:80 --network goals-net goals-node
【问题讨论】:
-
如果您的目标是在主机代码上实时重新加载,使用基于主机的 Node 环境是否更有意义,而不是引入 Docker 作为隔离层,然后尝试解决其隔离问题特点?
-
公平点。我正在学习教程,所以我可能永远不会尝试在现实生活中完成此任务。