无法使用具有package.json文件的卷构建Node容器以运行npm install

时间:2019-12-01 16:00:01

标签: node.js docker npm

Docker如何构建容器?我不知道。我想要:

  • 建造一个容器
  • 在其中传递本地文件夹
  • 将npm安装在卷文件夹的容器中(使用dockerfile)(因此,我可以在本地驱动器上看到它)
  • 在我的Yaml配置文件中运行命令

我尝试使用ls命令列出文件夹的内容,但是/src/始终为空(打印:src) 我的docker-compose.yml

version: '3'

services:
  node:
    build:
      context: .
      dockerfile: Dockerfile.node
    volumes:
      - ./src:/src
    command: run develop
    tty: true

我的Dockerfile.node:

FROM node:12
WORKDIR /src
COPY ./src/package*.json ./src/
RUN ls
RUN cd ./src
RUN ls
RUN npm install
RUN ls

在RUN 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

请帮助,谢谢。

1 个答案:

答案 0 :(得分:1)

RUN仅在当前npm install命令中可用,因为Dockerfile每个命令都在单独的shell中运行,因此,当要运行/src时,您的工作就是WORKDIR,即cd .src不是您期望使用的/src/src,应该是RUN pwd #/src RUN cd ./src #here /src/src RUN ls #/src <-- back to WORKDIR, while you are expecting /src/src RUN npm install

WORKDIR

简而言之,dockerfile中有cd而不是RUN cd ./src && npm i

您必须选择,更改命令

COPY ./src/package*.json .

或更改复制命令,其余部分保持不变。

{{1}}