首页 > 解决方案 > 出现错误:运行 docker-compose 时找不到 nodemon

问题描述

我已经对 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: not found。当我在没有一切的情况下运行单个容器时,compose一切正常。有什么问题docker-compose definition

标签: node.jsdockerdocker-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:

希望能帮助到你 :)


推荐阅读