Node.js docker用卷组合而成-“;没有这样的文件或目录;对于package.json

Node.js docker用卷组合而成-“;没有这样的文件或目录;对于package.json,node.js,docker,npm,docker-compose,Node.js,Docker,Npm,Docker Compose,我有一个Dockerfile和一个docker-compose.yml文件。在我将卷行添加到docker compose文件之前,一切正常。当我添加卷时,会出现以下错误。我正在windows 7上使用docker工具箱和Oracle VM VirtualBox Dockerfile FROM node:10.16.3 WORKDIR /usr/src/facerecognitionbrain-api COPY ./ ./ RUN npm install CMD ["/bin/bash"]

我有一个Dockerfile和一个docker-compose.yml文件。在我将卷行添加到docker compose文件之前,一切正常。当我添加卷时,会出现以下错误。我正在windows 7上使用docker工具箱和Oracle VM VirtualBox

Dockerfile

FROM node:10.16.3

WORKDIR /usr/src/facerecognitionbrain-api

COPY ./ ./

RUN npm install

CMD ["/bin/bash"]
docker compose.yml

version: '3.7'

services:
 facerecognitionbrain-api:
  container_name: backend
  # image: node:10.16.3
  build: ./
  command: npm start
  working_dir: /usr/src/facerecognitionbrain-api
  ports:
  - "3008:3008"
  volumes:
  - ./:/usr/src/facerecognitionbrain-api
错误

backend                     | npm ERR! code ENOENT
backend                     | npm ERR! errno -2
backend                     | npm ERR! syscall open
backend                     | npm ERR! enoent ENOENT: no such file or directory, open '/usr/src/facerecognitionbrain-api/package.json'
backend                     | npm ERR! enoent This is related to npm not being able to find a file.
backend                     | npm ERR! enoent
backend                     |
backend                     | npm ERR! A complete log of this run can be found in:
backend                     | npm ERR!     /root/.npm/_logs/2019-10-18T10_24_08_071Z-debug.log
backend exited with code 254

我认为您应该只使用WORKDIR的一个子目录,而不是完整的/usr/src/facerecognitionbrain api


这里创建了卷,然后npm尝试读取package.json,但docker在您的卷中查找文件,该文件是空的。

注意,您现在正在执行此双重操作(复制和共享卷),但这仍然可以工作。您能否共享上述日志的内容,并在失败的命令之前放置一个“ls”命令?容器中是否有package.json?错误是执行NPM命令的当前工作目录没有package.json。如果在windows上运行,是否在Docker for windows设置中启用了共享驱动器?(为了让卷发挥作用)。@bastijn我对这个很陌生。如何访问该日志?还有,我如何在失败的命令之前放置ls命令?@bastijn alos这是windows 7,所以它没有Docker for windows设置,我不这么认为?我想是的,从未亲自检查过。如果您转到Docker for Windows的设置(右键单击whale),应该有一个部分[共享驱动器]或类似的内容。选中复选框,你就可以开车了。太好了!成功了。那么为什么卷是空的呢?volumes命令不是将主机根目录中的所有内容都放在我指定的路径中吗?同样在这种情况下,Dockerfile中的COPY命令是否没有运行?我认为docker希望您在设置文档后在卷中创建文档,因此它被创建为空并覆盖现有文件夹(或者docker忽略它们)。您应该将其视为docker中文件的长期存储。当我现在进行更改时,docker-compose似乎没有得到更新。这可能是此修复的副作用吗?