Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/34.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/docker/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js+;Docker Compose:节点\u模块消失_Node.js_Docker_Docker Compose - Fatal编程技术网

Node.js+;Docker Compose:节点\u模块消失

Node.js+;Docker Compose:节点\u模块消失,node.js,docker,docker-compose,Node.js,Docker,Docker Compose,我正在尝试使用Docker Compose在我的开发环境中整合许多Node.js应用程序。但是,我遇到了一个关于node\u模块的问题 下面是正在发生的事情: npm安装作为Dockerfile的一部分运行 我的本地目录中没有node\u模块。(我不应该这样做,因为依赖项的安装应该在容器中进行,对吗?否则,它似乎无法达到目的,因为我需要在本地安装Node.js。) 在docker compose.yml中,我正在用源代码设置一个卷 docker compose build运行良好 当Idocke

我正在尝试使用Docker Compose在我的开发环境中整合许多Node.js应用程序。但是,我遇到了一个关于
node\u模块的问题

下面是正在发生的事情:

  • npm安装
    作为
    Dockerfile
    的一部分运行
  • 我的本地目录中没有
    node\u模块
    。(我不应该这样做,因为依赖项的安装应该在容器中进行,对吗?否则,它似乎无法达到目的,因为我需要在本地安装Node.js。)
  • docker compose.yml
    中,我正在用源代码设置一个
  • docker compose build
    运行良好
  • 当I
    docker compose up
    时,
    node\u modules
    目录在容器中消失-我假设是因为卷已装入,而我的本地目录中没有它
  • 如何确保
    node\u模块
    固定在周围

    Dockerfile
    docker compose.yml

    因此,只需将
    节点_模块
    放在源代码路径的更高位置。例如,把你的源代码放在
    /app/src
    上,把你的
    包.json
    放在
    /app
    上,这样
    /app/node_模块就可以安装在
    /usr/src/app
    目录下,导致
    节点\u modules
    文件夹在
    /app
    目录中结束。结果,
    node\u modules
    文件夹同时出现在容器中的
    /usr/src
    /usr/src/app
    目录中,最后出现的问题与开始时相同。

    是的,我也遇到了这个问题。我非常努力地将所有东西都保存在容器中(包括开发流程,比如构建工具),但我认为这在现实中是不可行的。我现在在我的主机上运行开发流程,所以我确实需要
    node\u模块
    ,这意味着正如您所说,它已同步到
    /app/src
    。到目前为止,这不是一个问题,但我可以看到,如果在我的主机(OS X)上构建了与容器(Ubuntu)不兼容的东西,这就是一个问题。Justin的可能副本您是否发现了这一点,因为我似乎有一个非常类似的问题,我根本无法工作:-它在没有卷映射的情况下工作,但这并不好,因为每次更改任何内容时,我都必须
    构建
    ,这太耗时了。@JosephMcDermott是我找到的最佳解决方案。
    
    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"]
    
    api:
      build: .
      command: grunt
      links:
        - elasticsearch
      ports:
        - "9002:9002"
      volumes:
        - .:/src
    
    elasticsearch:
      image: elasticsearch:1.5