在Docker上构建vue / quasar应用程序时出错

时间:2019-08-29 18:52:19

标签: node.js docker vue.js npm quasar-framework

npm run buildvue-cli-service build)上的Docker错误

我正在容器化一个应用程序,以便在具有kubernetes的云服务上使用它。但是在我的Dockerfile的构建阶段,vue-cli-plugin-quasar出现了错误。

在docker构建过程中,可能与quasar软件包和对外部软件包的访问有关,但是我对docker不满意。

我在管理软件包(npm i,审计等)之前尝试使用RUN npm i -g @vue/cli。 在搜索此问题时一无所获。

尝试使用多阶段Dockerfile

FROM node:12 as dev-stage

WORKDIR /my-app

COPY package*.json ./

COPY server/ ./server
COPY src/ ./src

RUN npm install -g @vue/cli

RUN npm i

RUN npm audit fix

RUN cd server && npm i

RUN cd server && npm audit fix

FROM dev-stage as build-stage
RUN npm run build

此后我还有更多阶段,但是错误发生在构建中

没有它

FROM node:12 as dev-stage

WORKDIR /my-app

COPY package*.json ./

COPY server/ ./server
COPY src/ ./src

RUN npm install -g @vue/cli

RUN npm i

RUN npm audit fix

RUN cd server && npm i

RUN cd server && npm audit fix

RUN npm run build

错误输出

ERROR  TypeError: Cannot read property 'quasar' of undefined
TypeError: Cannot read property 'quasar' of undefined
    at module.exports (/my-app/node_modules/vue-cli-plugin-quasar/index.js:2:29)
    at /my-app/node_modules/@vue/cli-service/lib/Service.js:83:7
    at Array.forEach (<anonymous>)
    at Service.init (/my-app/node_modules/@vue/cli-service/lib/Service.js:81:18)
    at Service.run (/my-app/node_modules/@vue/cli-service/lib/Service.js:221:10)
    at Object.<anonymous> (/my-app/node_modules/@vue/cli-service/bin/vue-cli-service.js:37:9)
    at Module._compile (internal/modules/cjs/loader.js:936:30)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:947:10)
    at Module.load (internal/modules/cjs/loader.js:790:32)
    at Function.Module._load (internal/modules/cjs/loader.js:703:12)

糟糕:我在npm i之后列出了我的node_modules文件夹,并且那里有quasar软件包

1 个答案:

答案 0 :(得分:0)

我可以通过如下的多阶段构建来克服此问题:

FROM node:12.14.1-alpine3.11  as get-sources

RUN apk add --no-cache bash && \
    apk update && \
    apk upgrade && \
    apk add git && \
    apk add openssh-client

.....

RUN git clone ssh://git@private-repo.com/user/Project.git

FROM node:12.14.1-alpine3.11 as build-stage

RUN apk update && apk add python make g++ && \
    npm config --global set python2 /usr/bin/python

WORKDIR /app

# copy the repository form the previous stage
COPY --from=get-sources  /Project/src ./

# get dependencies
RUN yarn install --production

COPY ./ .

RUN yarn build

......

# copy dist to final production stage 

基本上不是仅复制package.json并仅基于该内容安装/构建该应用程序,而是复制了该应用程序的整个源,并在该上下文中构建了该应用程序。然后在下一步中,仅将/ dist内容复制到最终位置。