收到错误:运行docker-compose时找不到nodemon

时间:2018-07-17 13:36:06

标签: 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: not found。当我运行不带compose的单个容器时,一切正常。 docker-compose definition怎么了?

1 个答案:

答案 0 :(得分:3)

我认为您的问题可能是您的主机上没有安装node_modules。因此,当您通过docker-compose卷映射主机和容器文件系统时,主机将覆盖容器的nod​​e_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:

希望它会有所帮助:)