Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/37.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/3/gwt/3.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 for windows运行节点容器失败_Node.js_Docker - Fatal编程技术网

Node.js 使用docker for windows运行节点容器失败

Node.js 使用docker for windows运行节点容器失败,node.js,docker,Node.js,Docker,从使用docker toolbox切换到docker for windows后,我无法运行容器。启动容器后,它会立即失败,状态为退出254。这个设置以前是使用virtualbox工作的,我很困惑这个问题可能是什么。构建成功完成 这就是错误: frontend_1 | npm info it worked if it ends with ok frontend_1 | npm info using npm@3.8.6 frontend_1 | npm info using

从使用docker toolbox切换到docker for windows后,我无法运行容器。启动容器后,它会立即失败,状态为退出254。这个设置以前是使用virtualbox工作的,我很困惑这个问题可能是什么。构建成功完成

这就是错误:

frontend_1     | npm info it worked if it ends with ok
frontend_1     | npm info using npm@3.8.6
frontend_1     | npm info using node@v5.12.0
frontend_1     | npm ERR! Linux 4.4.15-moby
frontend_1     | npm ERR! argv "/usr/local/bin/node" "/usr/local/bin/npm" "run" "dev:no-debug"
frontend_1     | npm ERR! node v5.12.0
frontend_1     | npm ERR! npm  v3.8.6
frontend_1     | npm ERR! path /usr/src/app/package.json
frontend_1     | npm ERR! code ENOENT
frontend_1     | npm ERR! errno -2
frontend_1     | npm ERR! syscall open
frontend_1     |
frontend_1     | npm ERR! enoent ENOENT: no such file or directory, open '/usr/src/app/package.json'
frontend_1     | npm ERR! enoent ENOENT: no such file or directory, open '/usr/src/app/package.json'
frontend_1     | npm ERR! enoent This is most likely not a problem with npm itself
frontend_1     | npm ERR! enoent and is related to npm not being able to find a file.
frontend_1     | npm ERR! enoent
frontend_1     |
frontend_1     | npm ERR! Please include the following file with any support request:
frontend_1     | npm ERR!     /usr/src/app/npm-debug.log
这是我的Dockerfile:

FROM node:5

WORKDIR /usr/src/app
COPY package.json /usr/src/app/
RUN npm install
COPY . /usr/src/app/

CMD [ "npm", "run", "dev:no-debug" ]
这是相关的撰写文件设置:

services:
  frontend:
    build:
      context: ./frontend
    volumes:
      - ./frontend:/usr/src/app
      - /usr/src/app/node_modules
    expose:
      - "7777"
    environment:
      - "PORT=7777"
      - "VIRTUAL_PORT=7777"
      - "VIRTUAL_HOST=test.example.com"
编辑:添加目录结构:

C  
└---Users
    |----deepc
         |----docker
              |----myproject
                   |---nginx
                   |---dockergen
                   |---frontend
                        ---package.json, node_modules, src, Dockerfile
                   ---docker-compose.yml

在you compose.yml中装载此卷:

- ./frontend:/usr/src/app
因此,基本上,您在dockerfile中之前所做的是无用的


如果您的
frontend
文件夹中没有package.json,这就是问题所在

我认为在这样的距离上调试是很困难的,但是您能否尝试像这样构建容器,看看它是否有效

FROM node:5

RUN mkdir -p /usr/src/app
COPY . /usr/src/app

WORKDIR /usr/src/app
RUN npm install
CMD ["npm", "run", "dev:no-debug"]
我认为问题在于:

没有这样的文件或目录,请打开“/usr/src/app/package.json”


…这告诉我您希望存在的目录不存在!不完全确定在复制之前是否需要创建目录,但是,如果您能给我们生成日志的输出,这会有所帮助。

docker run-ti yourimage ls/usr/src/app的输出是什么??您好,我看到了与主机上相同的正确目录结构:Dockerfile blueprints config jsconfig.json package.json tests README.md构建覆盖率node_modules server bin circle.yml接口nodemon.json src如果我运行docker run-ti 50be35c14916 npm run dev:no debug应用程序启动,我看不到上面的错误。因此我的答案是正确的,
-./frontend:/usr/src/app
意味着如果你
docker run-v./frontend:/usr/src/app-ti your image ls
你将有一个空文件夹hmmm当我运行上面的程序时,我会得到正确的输出,所有文件都在那里。i、 E PS C:\asaf\desfsaeasfasfpc>docker run-v./frontend:/usr/src/app-ti 50be35c14916 ls->显示Dockerfile bin构建配置接口节点_modules package.json src README.md blueprints circle.yml coverage jsconfig.json nodemon.json服务器测试也可以尝试挂载任何卷,看看是否有帮助,奇怪的是,package.json文件在容器中。我在上面添加了一些评论。是的,package.json在/usr/src/app中,但您在docker compose中使用
-./frontend:/usr/src/app
覆盖此文件夹,因此package.json不在此处。是的,这很可能是您在将
/usr/src/app
装载到现有文件夹时使用的run命令的问题主机上的目录。正如@michael_bitard已经回答的那样+我对你的建议有点困惑,基本上我的文件夹结构是app(dir)->docker-compose.yml、frontend(dir)等。frontend目录中有我的节点应用程序,其中包含node_模块,包json等。从阅读文档时,我的印象是,卷是相对于docker-compose.yml文件的卷取的,在我的情况下,docker-compose.yml文件位于比frontend高1个目录的位置,这就是为什么我将其称为./frontend。我还看到了容器中的正确文件