找不到Docker容器NPM依赖关系

时间:2019-07-06 01:34:08

标签: docker vue.js npm docker-compose

我为Docker容器设置了一个两阶段的构建过程。第一阶段安装git并运行npm install。第二阶段从阶段1复制node_modules,然后从主机复制源代码。然后,它运行开发服务器。一切似乎都正常运行,只是在开发服务器尝试启动时抛出此错误:

  

“ frontend_1 |找不到此依赖项:
frontend_1 |
frontend_1 | * ./node_modules/cache-loader/dist/cjs.js??ref--12中的vue-free-transform -0!./ node_modules / babel-loader / lib!./ node_modules / vuetify-loader / lib / loader.js!./ node_modules / cache-loader / dist / cjs.js ?? ref--0-0 !. / node_modules / vue-loader / lib ?? vue-loader-options!./ src / components / editor / Line.vue?vue&type = script&lang = js&“

我执行到容器中并检查了node_modules文件夹,并确保它在正确的位置,并且其中有vue-free-transform并且看起来是完整的。该项目是vue cli 3项目,所有webpack / bower设置都保留为vue cli默认设置。

我尝试删除所有使用的卷,清除npm缓存,并手动执行到容器中并运行npm install。

Dockerfile:

FROM node:alpine as builder

WORKDIR /usr/src/app
COPY package.json .
RUN apk add --no-cache git
RUN npm install

FROM node:alpine

WORKDIR /usr/src/app
COPY --from=builder /usr/src/app/node_modules ./node_modules
COPY . .

CMD ["npm", "run", "serve"]

docker-compose:

version: '3'

services:
  frontend:
    build:
      context: .
      dockerfile: Dockerfile.dev
    ports:
      - "8080:8080"
#    volumes:
#      - /usr/src/app/node_modules
#      - .:/usr/src/app
    command: ["npm", "run", "serve"]

我希望dev服务器能够启动而不会出现问题,但是我会在上面看到错误消息。如果我缺少任何重要细节,请告诉我!

1 个答案:

答案 0 :(得分:0)

好吧,我知道了...像往常一样,这只是一个愚蠢的错误。回购被拉得很好,但模块从未构建过,因此其中没有dist文件夹。

必须确保使用模块提交dist文件夹,或者在使用npm安装后进行构建。