我为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服务器能够启动而不会出现问题,但是我会在上面看到错误消息。如果我缺少任何重要细节,请告诉我!
答案 0 :(得分:0)
好吧,我知道了...像往常一样,这只是一个愚蠢的错误。回购被拉得很好,但模块从未构建过,因此其中没有dist文件夹。
必须确保使用模块提交dist文件夹,或者在使用npm安装后进行构建。