【问题标题】:docker multistage build fails on vue.jsdocker multistage build 在 vue.js 上失败
【发布时间】:2019-08-23 16:23:47
【问题描述】:

这是我的 dockerFile,位于 vDocker/Dockerfile

# 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 位于根目录。

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 build 后,出现以下错误:Service 'web_client' failed to build: COPY failed: stat /var/lib/docker/overlay2/67b326c995a1ce52fb3ee2a792d84ffe9bc403aa5962755a2b89f1ab925a1242/merged/app/dist: no这样的文件或目录

知道为什么吗?

【问题讨论】:

  • 嗨,你解决了吗?

标签: docker vue.js docker-compose


【解决方案1】:

您无需命名第二阶段。

您的构建看起来如何取决于您如何设置它,我不知道。但是你可以做的是:

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

对于其余部分,您的代码看起来不错。

【讨论】:

    猜你喜欢
    • 2018-06-27
    • 1970-01-01
    • 1970-01-01
    • 2021-03-06
    • 1970-01-01
    • 2017-05-29
    • 2019-06-23
    相关资源
    最近更新 更多