Docker多阶段构建在vue.js上失败

docker multistage build fails on vue.js

这是我的dockerFile,位于vDocker / Dockerfile

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# build stage
FROM node:lts-alpine as build-stage
WORKDIR /app
COPY package*.json ./
RUN npm install
COPY . .
RUN npm run build

# production stage
FROM nginx:stable-alpine as production-stage
RUN apk add --no-cache bash
COPY ./vDocker/nginx.conf /etc/nginx/conf.d/default.conf
COPY --from=build-stage /app/dist /usr/share/nginx/html

EXPOSE 80 443

CMD ["nginx","-g","daemon off;"]

我在根目录中也有docker-compose。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
version: '3'

services:
  web_client:
    build:
      context: .
      dockerfile: ./vDocker/Dockerfile
    container_name: web_client
    restart: unless-stopped
    tty: true
    volumes:
      - /var/www/app/ssl/certbot/conf:/etc/letsencrypt
      - /var/www/app/ssl/certbot/www:/var/www/certbot
    ports:
      - 80:80
      - 443:443

运行docker-compose构建后,它给我以下错误:服务\\'web_client \\'构建失败:COPY失败:stat / var / lib / docker / overlay2 / 67b326c995a1ce52fb3ee2a792d84ffe9bc403aa5962755a2b89f1ab925a1242 / merged / app / dist:无此类文件或目录

知道为什么吗?


您无需命名第二阶段。

构建的外观取决于您的设置方式,我不知道。但是您可以做的是:

  • 作为单独的Dockerfile运行第一阶段
  • 在最后一次RUN之后添加RUN ls -lart->这应该打印目录的内容,您可以检查/ app / dist是否确实存在

其余的代码看起来不错。