node.js - 保存时Docker Nodemon未启动

标签 node.js docker docker-compose nodemon

我在 Ubuntu 操作系统上开发了我的网站,但今天我已经转移到 Windows。在迁移到 Windows 之前 Nodemon 可以工作,但现在如果我单击保存它不会重新启动。
Dockerfile

FROM node:current-alpine3.11

RUN mkdir /mbs_welfare

WORKDIR /mbs_welfare

COPY package.json /mbs_welfare/

RUN npm install

COPY . /mbs_welfare

RUN npm install -g nodemon

EXPOSE 3000

CMD ["nodemon","server.js"]
docker-compose.yml
version: "3.8"
services: 
    web:
        build: .
        restart: always
        ports: 
            - 3000:3000
        volumes: 
            - .:/mbs_welfare

    mysql_db:
        image: mysql:latest
        command: --default-authentication-plugin=mysql_native_password
        environment:
            MYSQL_ROOT_PASSWORD: ****
        ports:
            - 3306:3306
        volumes:
            - mysql_db:/var/lib/mysql

    phpmyadmin:
        image: phpmyadmin/phpmyadmin
        ports:
            - 8000:80
        links:
            - mysql_db:db
        environment:
            MYSQL_USERNAME: root
            MYSQL_ROOT_PASSWORD: ****
            PMA_HOST: mysql_db

volumes:
    mysql_db:
包.json 我试图“开始”的一些代码:“nodemon -L ./server.js”但它不起作用
{
  "name": "welfare",
  "version": "1.0.0",
  "description": "",
  "main": "server.js",
  "scripts": {
    "dev": "nodemon ./server.js",
    "start": "nodemon ./server.js", 
    "test": "echo \"Error: no test specified\" && exit 1"
}
命令行
web_1 : [nodemon] 2.0.4
web_1 : [nodemon] to restart at any time, enter 'rs'
web_1 : [nodemon] watching path(s) *.*
web_1 : [nodemon] watching extensions: js,mjs,json
web_1 : [nodemon] starting 'node server.js'
web_1 : Server is running on port : 3000

最佳答案

nodemon需要inotify-tools用于检测 linux 中的文件更改的库,这些更改在 nodejs 容器的 alpine 版本上不存在。您可以使用 apk add inotify-tools 安装它在你的 dockerfile 中。
我记得旧版本的 Docker Desktop for Windows 没有检测到从主机绑定(bind)挂载的文件上的文件更改(换句话说,inotify-tools 文件系统监视不起作用)。如果您安装了 inotify-tools,这可能仍然是一个问题。它仍然没有检测到文件更改。
您必须 force nodemon to use polling在那件事上。
最后,如果这些都不适合你,我建议切换到 WSL在 Windows 上让您省去很多麻烦(我猜 WSL2 有原生 docker 支持,这很棒)

关于node.js - 保存时Docker Nodemon未启动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62769660/

相关文章:

javascript - 在 Node 4.x 中导出 ES6 类意外的保留字

node.js - 开发时绕过 Storm 路径

macos - 如何在Docker上初始化 `libdc1394`

postgresql - 使用 Postgres 在 docker 中上传 csv 文件

php - Docker Compose LAMP 堆栈不提供 index.php

node.js - 如何在 Typescript 中启用 NodeJS 和 ExpressJs

node.js - 有没有办法通过 NodeJS 检索文件/文件夹的唯一 ID?

cassandra - 在 Cassandra Docker 中启用 Thrift

wordpress - Wordpress Docker容器无法连接到数据库容器

symfony - docker-compose ERROR : The Compose file is invalid because: Service database has neither an image nor a build context specified. 至少一个必须是……