Node.js + Docker Compose:node_modules消失

时间:2015-06-18 20:47:02

标签: node.js docker docker-compose

我尝试使用Docker Compose在我的开发环境中汇集了许多Node.js应用程序。但是,我遇到问题node_modules

这里发生了什么:

  1. npm installDockerfile
  2. 的一部分
  3. 我的本地目录中没有node_modules。 (我不应该因为依赖项的安装应该在容器中进行,对吧?这似乎打败了目的,因为我需要在本地安装Node.js。)
  4. docker-compose.yml中,我设置了volume的源代码。
  5. docker-compose build运行良好。
  6. 当我docker-compose up时,node_modules目录在容器中消失了 - 我假设因为已装入卷而我没有在我的本地目录中。
  7. 如何确保node_modules坚持下去?

    Dockerfile

    FROM       node:0.10.37
    
    COPY       package.json /src/package.json
    
    WORKDIR    /src
    
    RUN        npm install -g grunt-cli && npm install
    
    COPY       . /src
    
    EXPOSE     9001
    
    CMD        ["npm", "start"]
    

    docker-compose.yml

    api:
      build: .
      command: grunt
      links:
        - elasticsearch
      ports:
        - "9002:9002"
      volumes:
        - .:/src
    
    elasticsearch:
      image: elasticsearch:1.5
    

2 个答案:

答案 0 :(得分:3)

由于the way Node.js loads modules,只需在源代码路径中放置node_modules。例如,将您的来源放在/app/src,将package.json放在/app,这样/app/node_modules就是他们安装的位置。

答案 1 :(得分:0)

我尝试了你的修复,但问题是大多数人在/usr/src/app目录中运行npm install,导致node_modules文件夹最终在/app目录中。因此,node_modules文件夹最终会出现在容器中的/usr/src/usr/src/app目录中,最终会出现与您开始时相同的问题。