докер-компоновка: не удалось решить: ошибка rpc: код = Неизвестный дескриптор = не удалось вычислить ключ кэша

#node.js #docker #docker-compose

Вопрос:

Когда я запускаю свой файл dockerfile с docker build помощью and docker run , он отлично работает. Но когда я создаю docker-compose.yml файл для подключения MongoDB, я получил ошибку.

ОШИБКА: failed to solve: rpc error: code = Unknown desc = failed to compute cache key: failed to walk /var/lib/docker/tmp/buildkit-mount285447202/backend: lstat /var/lib/docker/tmp/buildkit-mount285447202/backend: no such file or directory .

Вот мой докер-составьте код:

 version: "3"
services:   
  backend: 
    build: 
      context: ./docker
      dockerfile: Dockerfile.backend
    container_name: backend
    ports: 
      - '8081:8081'
    links:  
      - mongodb
  mongodb:
    container_name: mongodb
    image: mongo
    ports:
      - '27017:27017'
 

Вот мой код файла докера:

 FROM node:14-alpine AS builder
WORKDIR /app
COPY backend/package.json backend/package-lock.json ./
RUN npm install

COPY backend/src/ ./src
COPY backend/.env ./
COPY backend/.babelrc ./
RUN mkdir -p build/src
RUN npm run build

FROM node:alpine AS runner
WORKDIR /app

RUN apk add --no-cache 
      chromium 
      nss 
      freetype 
      harfbuzz 
      ca-certificates 
      ttf-freefont

ENV PUPPETEER_SKIP_CHROMIUM_DOWNLOAD=true 
    PUPPETEER_EXECUTABLE_PATH=/usr/bin/chromium-browser

RUN npm install puppeteer@10.0.0

RUN addgroup -S pptruser amp;amp; adduser -S -g pptruser pptruser 
    amp;amp; mkdir -p /home/pptruser/Downloads /app 
    amp;amp; chown -R pptruser:pptruser /home/pptruser 
    amp;amp; chown -R pptruser:pptruser /app

# USER pptruser
USER root

COPY --from=builder /app/package.json ./
COPY --from=builder /app/package-lock.json ./
COPY --from=builder /app/.env ./
COPY --from=builder /app/build ./build
COPY --from=builder /app/node_modules ./node_modules

EXPOSE 8081

CMD ["node", "build/src/index.js"]
 

Я получил ОШИБКУ в:

 => ERROR [builder 3/9] COPY backend/package.json backend/package-lock.json ./                                   0.0s 
 => CACHED [builder 4/9] RUN npm install                                                                         0.0s 
 => ERROR [builder 5/9] COPY backend/src/ ./src                                                                  0.0s 
 => ERROR [builder 6/9] COPY backend/.env ./                                                                     0.0s 
 => ERROR [builder 7/9] COPY backend/.babelrc ./                                                                 0.0s 
 

Мой каталог:

 |-docker-compose.yml
|-backend
| |-src
| |-package.json
| |-package-lock.json 
| |-build
| |-...
|-docker
| |-Dockerfile.backend
| |-Dockerfile.frontend
|....
 

Ответ №1:

Обычно это происходит, когда Dockerfile не удается найти папку, например

Докерфайл:

 FROM alpine:3.8
COPY backend /tmp
 

Исполнение:

 $ docker build .
Sending build context to Docker daemon  2.048kB
Step 1/2 : FROM alpine:3.8
 ---> c8bccc0af957
Step 2/2 : COPY backend /tmp
COPY failed: stat /var/lib/docker/tmp/docker-builder736780062/backend: no such file or directory
 

Убедитесь context , что в папке(вот ваша docker ) есть backend папка.

Для вас правильным способом должно быть:

 version: "3"
services:
  backend:
    build:
      context: .
      dockerfile: docker/Dockerfile.backend