Node.js 无法生成包含package.json文件的卷的节点容器以运行npm安装

Node.js 无法生成包含package.json文件的卷的节点容器以运行npm安装,node.js,docker,npm,Node.js,Docker,Npm,Docker如何构建容器?我想不出来。我想: 建造一个容器 在其中传递本地文件夹 使用卷文件夹中的dockerfile在容器中安装npm,以便我可以在本地驱动器上看到它 在我的yaml配置文件中运行命令 我曾尝试使用ls命令列出文件夹的内容,但/src/总是空的 My docker-compose.yml: My Dockerfile.node: FROM node:12 WORKDIR /src COPY ./src/package*.json ./src/ RUN ls RUN cd ./s

Docker如何构建容器?我想不出来。我想:

建造一个容器 在其中传递本地文件夹 使用卷文件夹中的dockerfile在容器中安装npm,以便我可以在本地驱动器上看到它 在我的yaml配置文件中运行命令 我曾尝试使用ls命令列出文件夹的内容,但/src/总是空的 My docker-compose.yml:

My Dockerfile.node:

FROM node:12
WORKDIR /src
COPY ./src/package*.json ./src/
RUN ls
RUN cd ./src
RUN ls
RUN npm install
RUN ls
在运行npm install命令时,我遇到以下错误:

npm WARN saveError ENOENT: no such file or directory, open '/src/package.json'
我使用命令docker compose up-build启动项目

我的文件夹结构是:

/
src
  --package.json
docker-compose.yml
Dockerfile.node
请提供帮助,提前感谢。

cd./src仅在当前的RUN命令中可用,因为Dockerfile每个命令都在单独的shell中运行,因此当运行npm install时,此时您的工作是WORKDIR,它是/src,而不是您希望使用的cd.src,它应该是/src/src

或者更改“复制”命令并保持其余命令不变

COPY ./src/package*.json .


这就是我需要的语法:cd./src&&npmi。非常感谢!Docker并不像你描述的那样工作。如果要在本地源代码树上运行本地命令,只需直接运行node;它将有更少的陷阱和移动部件,而且它也会工作得很好。通常,Dockerfile中的步骤在源代码树的独立副本上运行,并且永远不会反映回主机上,docker运行命令中的任何内容或docker-compose.yml文件中的大多数选项生效之前,docker文件中的所有内容都会发生-尤其是构建序列从未看到装入的卷。David Maze-谢谢,说得好!在知道这一点之前我经历了很多。
RUN pwd
#/src
RUN cd ./src #here /src/src
RUN ls
#/src <-- back to WORKDIR, while you are expecting /src/src
RUN npm install
RUN cd ./src && npm i
COPY ./src/package*.json .