docker中的Nodemon不起作用,--legacy-watch -L也不起作用

Posted

技术标签:

【中文标题】docker中的Nodemon不起作用,--legacy-watch -L也不起作用【英文标题】:Nodemon in docker doesn't work, also --legacy-watch -L are not working 【发布时间】:2022-01-23 08:07:54 【问题描述】:

我试图找到解决方案很长一段时间 - 在更新例如 index.js 时在 docker 中重新加载 nodemon。我有windows 10。 我有 docker 的节点项目: proj/backend/src/index.js:

const express = require('express')
const app = express()
app.get('/', (req, res) => 
    res.send('Hello world.')
)
const port = process.env.PORT || 3001
app.listen(port, () => 
    console.log(`Example app listening at http://localhost:$port`)
)

项目/后端/package.json:


  "scripts": 
    "start": "node ./bin/www",
    "start:legacy": "nodemon --legacy-watch -L --watch src src/index.js"
  ,
  "dependencies": 
    "express": "^4.17.2"
  ,
  "devDependencies": 
    "nodemon": "^2.0.15"
  

proj/backend/dev.Dockerfile:

FROM node:lts-alpine
RUN npm install --global nodemon
WORKDIR /usr/src/app
COPY . .
RUN npm ci
EXPOSE 3001
ENV DEBUG=playground:*
CMD npm run start:legacy

proj/docker-compose.dev.yml:

version: '3.8'
services:
  backend:
    image: backend-img
    build:
      context: ./backend
      dockerfile: ./dev.Dockerfile
    ports:
      - 3001:3001
    environment:
      - PORT=3001

【问题讨论】:

【参考方案1】:

如果我没记错的话,docker 容器是在进程结束时自行杀死的。使用 nodemon(和更新代码)时,进程将停止并重新启动,容器将 stop。你可以让 npm start 不是主进程,但这不是good practice

【讨论】:

我认为这不是一个好习惯。如果在课程材料中我们可以阅读:fullstackopen.com/en/part12/basics_of_orchestration。

以上是关于docker中的Nodemon不起作用,--legacy-watch -L也不起作用的主要内容,如果未能解决你的问题,请参考以下文章

Nodemon 检查/调试不起作用?

nodemon 排除文件夹/文件不起作用 - win10

nodemon 服务器命令不起作用 - 我的第一个全栈 mern 环境

Nodemon 无法在 Docker 上使用 package.json 中的 npm 脚本

Docker /bin/bash: nodemon: 找不到命令

Java 中的 FileLock 在 Docker 挂载卷中不起作用