докер-сочинение, не удалось решить: ошибка rpc: код = Неизвестно desc = не удалось вычислить ключ кэша: «/app/package.json» не найден: не найден

#reactjs #docker #docker-compose #frontend #backend

Вопрос:

У меня проблема с путями docker-compose , когда я пытаюсь построить проект только с docker build помощью , он отлично работает, но я не должен использовать docker build , я должен использовать docker-compose . Когда я использую docker-compose его, он возвращает 2 ОШИБКИ на шаге 3/5 => ERROR [3/5] COPY /app/package.json . и на шаге 5/5 => ERROR [5/5] COPY /app . :

 PS C:UsersmambaDesktopproject-practice> docker-compose -f docker/docker-compose.yml up -d
[ ] Building 1.4s (9/9) FINISHED
 => [internal] load build definition from Dockerfile                                                                                                          0.1s 
 => => transferring dockerfile: 31B                                                                                                                           0.0s 
 => [internal] load .dockerignore                                                                                                                             0.1s 
 => => transferring context: 34B                                                                                                                              0.0s 
 => [internal] load metadata for docker.io/library/node:latest                                                                                                1.0s 
 => [1/5] FROM docker.io/library/node@sha256:c3356b2b11ad643852a321308c15d70ca2bc106e40d3ffe7a4879d3588a9d479                                                 0.0s 
 => [internal] load build context                                                                                                                             0.1s 
 => => transferring context: 2B                                                                                                                               0.0s 
 => CACHED [2/5] WORKDIR /app                                                                                                                                 0.0s 
 => ERROR [3/5] COPY /app/package.json .                                                                                                                      0.0s 
 => CACHED [4/5] RUN npm install                                                                                                                              0.0s 
 => ERROR [5/5] COPY /app .                                                                                                                                   0.0s 
------
 > [3/5] COPY /app/package.json .:
------
------
 > [5/5] COPY /app .:
------
failed to solve: rpc error: code = Unknown desc = failed to compute cache key: "/app/package.json" not found: not found
 

это моя структура проекта
http://skrinshoter.ru/s/080721/upY64zwf

это мой док-файл

 FROM node
WORKDIR /app
COPY /app/package.json .
RUN npm install
COPY /app .
EXPOSE 3000
CMD ["npm", "start"]
 

это мой докер-compose.yml

 version: "3.8"
services: 
    react-app:
        working_dir: /app
        build: 
            dockerfile: Dockerfile
        ports: 
            - "3000:3000"
        volumes: 
            - ./app/src:/app/src
        environment: 
            - CHOKIDAR_USEPOLLING=true
        # env_file: 
        #     - ./docker/.env
 

Если я перемещу docker-compose.yml в верхнюю часть структуры файлов project-practice , он отлично работает, он строится и запускается сервер, но я должен сохранить структуру папок и файлов, подобную этой.

 |-project-practice
|-app
|  |...
|-docker
   |...
 

Ответ №1:

Похоже, вы неправильно монтируете тома. Измените конфигурацию docker-compose с:

 build: 
     dockerfile: Dockerfile
volumes:
     - ./app/src:/app/src     
 

Вы устанавливаете только папку SRC, но вам нужны файлы за ее пределами. Также вам необходимо добавить контекст в ваш файл docker

Для:

 build: 
     context: ../
     dockerfile: /docker/Dockerfile
volumes:
     - ../app:/app
 

Путь должен быть относительно расположения файла docker-compose.

Также вам необходимо изменить файл Dockerfile:

 FROM node
WORKDIR /app
COPY /app/package.json .
RUN npm install
COPY /app .
EXPOSE 3000
CMD ["npm", "start"]
 

Комментарии:

1. Я старался делать, как вы говорите, но у нее все равно те же проблемы :((

2. только теперь это изменилось failed to solve: rpc error: code = Unknown desc = failed to compute cache key: "/app" not found: not found

3. но => ERROR [3/5] COPY /app/package.json . и => ERROR [5/5] COPY /app . не изменилось 🙁

4. Да, понял. Вам нужно изменить файл настройки. COPY ../app/package.json . и COPY ../app .

5. в любом случае, :((( не работает, то же самое( => ERROR [3/5] COPY ../app/package.json . и => ERROR [5/5] COPY ../app . и failed to solve: rpc error: code = Unknown desc = failed to compute cache key: "/app/package.json" not found: not found : ((((((

Ответ №2:

Поэтому, если ваш yml вложен, вам нужно использовать ../app/src:/app/src его, а не ./app/src:/app/src так, как он расположен относительно yml.

Комментарии:

1. Я пытался поступить так, как вы говорите, и это не помогает 🙁 Что я делаю не так?