docker-compose,未能解决:rpc 错误:代码 = 未知描述 = 无法计算缓存密钥:“/app/package.json”未找到:未找到

时间:2021-07-08 20:23:04

标签: reactjs docker docker-compose frontend backend

我的路径 docker-compose 有问题,当我尝试仅使用 docker build 构建项目时,效果很好,但我不能使用 docker build,我必须使用 {{ 1}}。当我使用 docker-compose 时,它在步骤 3/5 docker-compose 和步骤 5/5 => ERROR [3/5] COPY /app/package.json . 处返回 2 个错误:

=> ERROR [5/5] COPY /app .

这是我的项目结构 http://skrinshoter.ru/s/080721/upY64zwf

这是我的 Dockerfile

PS C:\Users\mamba\Desktop\project-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

这是我的 docker-compose.yml

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

如果我将文件结构中的 docker-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 ,它工作得很好,它构建并且服务器启动,但我必须保持这样的文件夹和文件的结构。

project-practice

2 个答案:

答案 0 :(得分:0)

因此,如果您的 yml 是嵌套的,您需要使用 ../app/src:/app/src 而不是 ./app/src:/app/src,因为它是 yml 的相对位置。

答案 1 :(得分:0)

看起来您安装卷有误。 从以下位置更改您的 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"]