使用Docker构建Vue 2项目报错:sh: vue-cli-service: not found
解决Docker构建Vue2应用时
vue-cli-service: not found错误 构建Vue2应用的Docker镜像时,执行npm run build环节抛出sh: vue-cli-service: not found错误,运行服务的配置正常,但构建流程失败。相关配置文件及执行命令如下:
Dockerfile
# build stage FROM node:14.18.0-alpine as build-stage ENV NODE_ENV=production WORKDIR /var/www/html/app COPY package*.json ./ RUN npm install -g @vue/cli RUN npm i COPY . . RUN npm run build # production stage FROM nginx:stable-alpine as production-stage COPY --from=build-stage /app/dist /usr/share/nginx/html EXPOSE 80 CMD ["nginx", "-g", "daemon off;"]
docker-compose.yml
version: '3.7' services: app: build: context: . dockerfile: Dockerfile ports: - "8080:80"
执行命令
docker-compose up -d
解决方案
1. 确保本地依赖包含vue-cli-service
检查项目根目录的package.json,确认devDependencies中存在@vue/cli-service。如果没有,在本地执行以下命令后提交更新后的package.json和package-lock.json:
npm install --save-dev @vue/cli-service
2. 修正构建阶段的依赖安装逻辑
由于设置了NODE_ENV=production,npm i默认不会安装devDependencies,但vue-cli-service通常属于开发依赖。需调整构建阶段的安装命令,确保安装所有依赖:
# build stage FROM node:14.18.0-alpine as build-stage WORKDIR /var/www/html/app COPY package*.json ./ # 移除全局安装@vue/cli,本地依赖即可满足需求 RUN npm install --production=false COPY . . RUN npm run build # production stage FROM nginx:stable-alpine as production-stage # 修正dist目录的复制路径,与build-stage的WORKDIR对应 COPY --from=build-stage /var/www/html/app/dist /usr/share/nginx/html EXPOSE 80 CMD ["nginx", "-g", "daemon off;"]
3. 路径错误修正
原Dockerfile的production阶段中,复制dist目录的路径错误——build-stage的工作目录是/var/www/html/app,因此dist目录实际位于/var/www/html/app/dist,而非/app/dist,需同步修正。
内容的提问来源于stack exchange,提问作者Pooria Sadeghy
相关产品推荐
相关产品推荐

