node.js - 出现错误 : nodemon not found when running docker-compose

标签 node.js docker docker-compose

我已经对一个 Node.js 应用程序进行了 docker 化,并创建了一个 docker-compose 文件来与 mongo 一起运行它。我使用 docker 进行开发,因此我需要 nodemon。

这是我的 Dockerfile:

FROM node:carbon-alpine

RUN mkdir -p usr/src/app
WORKDIR /usr/src/app

RUN npm install -g nodemon

COPY package*.json /usr/src/app

RUN yarn install

COPY . /usr/src/app

EXPOSE 3000

CMD [ "yarn", "start-local" ]

这是 docker-compose

version: "3"

services:
  app:
    container_name: app
    restart: always
    build: .
    volumes:
      - .:/usr/src/app
    environment:
      - MONGO_URI=mongodb://mongo:27017/test
    ports:
      - "3000:3000"
    depends_on:
      - mongo
    networks:
      app_net:

  mongo:
    container_name: app-mongo
    image: mongo:3.6.6-jessie
    volumes:
      - ./data:/data/db
    networks:
      app_net:
        aliases:
          - mongo

networks:
  app_net:

当我运行docker-compose up时,我收到错误/bin/sh:nodemon:notfound。当我在没有 compose 的情况下运行单个容器时,一切正常。 docker-compose 定义有什么问题

最佳答案

我认为您的问题可能是您的主机上没有安装node_modules。因此,当您通过 docker-compose 卷映射主机和容器文件系统时,主机会覆盖容器的 node_modules 文件夹。

为了避免您应该忽略该文件夹,如下所示:

version: "3"

services:
  app:
    container_name: app
    restart: always
    build: .
    volumes:
      - .:/usr/src/app
      - /usr/src/app/node_modules/
    environment:
      - MONGO_URI=mongodb://mongo:27017/test
    ports:
      - "3000:3000"
    depends_on:
      - mongo
    networks:
      app_net:

  mongo:
    container_name: app-mongo
    image: mongo:3.6.6-jessie
    volumes:
      - ./data:/data/db
    networks:
      app_net:
        aliases:
          - mongo

networks:
  app_net:

希望有帮助:)

关于node.js - 出现错误 : nodemon not found when running docker-compose,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51382804/

相关文章:

jquery - POST AJAX 请求被拒绝 - CORS?

storage - Docker 镜像占用了大量空间?

amazon-web-services - 在 AWS ECS 上的 Docker 镜像中运行 CloudWatch 代理失败

ubuntu - 无法正确安装 docker

MySQL-Docker 镜像 : How to wait till the tables are populated before starting the next container

javascript - express-jwt 中缺少 "admin"属性

javascript - Mongodb 版本 3+ : how to insert new document only if it doesn't exist and get the result

docker - docker-compose无法连接到asp.net核心站点

docker - 在容器中写入文件时,Docker权限被拒绝

javascript - 文件未使用 Node js上传到服务器