当我尝试构建 Docker 映像时,Gitlab 作业失败

时间:2021-06-28 19:45:50

标签: docker

有以下 Dockerfile:

FROM node:12.22-alpine3.12 as builder

RUN mkdir /app

COPY . /app

WORKDIR /app

RUN npm i && npm build

FROM nginx:alpine

WORKDIR /usr/share/nginx/html

RUN rm -rf ./*

EXPOSE 80

COPY --from=builder /app/build ./

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

没有什么聪明的 - 只需构建静态 JS 应用程序并将其放入 nginx 目录。它在本地运行良好。但它在 Gitlab 上失败并出现以下错误:

Step 8/11 : RUN rm -rf ./*
 ---> Running in a9cf55a3da31
Removing intermediate container a9cf55a3da31
 ---> 50c9a02d542d
Step 9/11 : EXPOSE 80
 ---> Running in edda7f7bf296
Removing intermediate container edda7f7bf296
 ---> be2caf89404f
Step 10/11 : COPY --from=builder /app/build ./
COPY failed: stat /var/lib/docker/overlay2/6a441679247bd4e1a321f7c6e15d4fe8dd59c5013d4e0058b7f3c9f395c20f98/merged/app/build: no such file or directory
Cleaning up file based variables
00:02
ERROR: Job failed: command terminated with exit code 1

而且我不明白这是什么意思,因为在本地它完全没有问题。

UPD:我的 .gitlab-ci.yml:

stages:
  - test
  - build

test:
  stage: test
  image: node:12.22-alpine3.12
  script:
    - echo 'Test Success'

build:
  image: docker:19.03.12
  stage: build
  services:
    - docker:19.03.12-dind
  variables:
    DOCKER_HOST: tcp://docker:2375
    DOCKER_TLS_CERTDIR: ""
  before_script:
    - docker login -u "$CI_REGISTRY_USER" -p "$CI_REGISTRY_PASSWORD" $CI_REGISTRY
  script:
    - docker build -t "$CI_REGISTRY_IMAGE:$CI_COMMIT_REF_SLUG.$CI_PIPELINE_ID" .
    - docker push "$CI_REGISTRY_IMAGE:$CI_COMMIT_REF_SLUG.$CI_PIPELINE_ID"

0 个答案:

没有答案
相关问题