You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.14 19:57:39