docker-compose 在 COPY 上构建错误

问题描述 投票:0回答:1

我在 Windows 10 上运行 Docker Desktop。我的桌面上有一个文件夹,其结构为:

├── cab/
│ ├── backend/
│ │ ├── Dockerfile
│ │ └── (the rest of my backend java application) 
│ ├── frontend/
│ │ ├── Dockerfile
│ │ └── (the rest of my frontend react application) 
│ ├── mysql/
│ │ ├── Dockerfile
│ │ ├── schema.sql
│ │ └── data.sql
│ └── docker-compose.yml

我的 docker-compose.yml 文件如下所示:

services:
    mysql:
        build: 
            context: .
            dockerfile: ./mysql/Dockerfile
        ports:
            - "3306:3306"
        networks:
            - cab-booking
    cab-frontend:
        build: 
            context: .
            dockerfile: ./frontend/Dockerfile
        ports:
            - "3000:3000"
        networks:
            - cab-booking
    cab-backend:
        build: 
            context: .
            dockerfile: ./backend/Dockerfile
        ports:
            - "8080:8080"
        networks:
            - cab-booking

networks:
    cab-booking:

这是我在前端的 Dockerfile/:

FROM node:18-alpine
WORKDIR /home/cab-frontend

COPY package.json /home/cab-frontend/
RUN npm install

COPY public/ /home/cab-frontend/public
COPY src/ /home/cab-frontend/src

CMD ["npm", "start"]

当我运行

docker-compose build
时,我得到以下错误输出:

2024/05/06 15:12:58 http2: server: error reading preface from client //./pipe/docker_engine: file has already been closed
2024/05/06 15:12:58 http2: server: error reading preface from client //./pipe/docker_engine: file has already been closed
2024/05/06 15:12:58 http2: server: error reading preface from client //./pipe/docker_engine: file has already been closed
[+] Building 0.0s (0/0)  docker:default
2024/05/06 15:12:58 http2: server: error reading preface from client //./pipe/docker_engine: file has already been closed
2024/05/06 15:12:58 http2: server: error reading preface from client //./pipe/docker_engine: file has already been close[+] Building 0.9s (26/33)                                                                                docker:default
 => [cab-backend internal] load build definition from Dockerfile                                                   0.0s
 => => transferring dockerfile: 540B                                                                               0.0s
 => [mysql internal] load build definition from Dockerfile                                                         0.0s
 => => transferring dockerfile: 311B                                                                               0.0s
 => [cab-backend internal] load metadata for docker.io/library/openjdk:21-jdk-slim                                 0.8s
 => [cab-backend internal] load metadata for docker.io/library/maven:3.9.6-amazoncorretto-21-al2023                0.8s
 => [cab-frontend internal] load build definition from Dockerfile                                                  0.0s
 => => transferring dockerfile: 246B                                                                               0.0s
 => [mysql internal] load metadata for docker.io/library/mysql:8-oracle                                            0.0s
 => [mysql internal] load .dockerignore                                                                            0.0s
 => => transferring context: 2B                                                                                    0.0s
 => [cab-frontend internal] load metadata for docker.io/library/node:18-alpine                                     0.7s
 => CACHED [mysql 1/4] FROM docker.io/library/mysql:8-oracle                                                       0.0s
 => [mysql internal] load build context                                                                            0.0s
 => => transferring context: 369B                                                                                  0.0s
 => [mysql 2/4] COPY . .                                                                                           0.1s
 => [mysql 3/4] ADD schema.sql /docker-entrypoint-initdb.d                                                         0.1s
 => [mysql 4/4] ADD data.sql /docker-entrypoint-initdb.d                                                           0.1s
 => [mysql] exporting to image                                                                                     0.1s
 => => exporting layers                                                                                            0.1s
 => => writing image sha256:6da7f28843817809bf2083f8e5b70c979458f25465f8f22c148f507a0ae63667                       0.0s
 => => naming to docker.io/library/cab-mysql                                                                       0.0s
 => [cab-frontend internal] load .dockerignore                                                                     0.0s
 => => transferring context: 2B                                                                                    0.0s
 => [cab-backend internal] load .dockerignore                                                                      0.0s
 => => transferring context: 2B                                                                                    0.0s
 => [cab-frontend internal] load build context                                                                     0.0s
 => => transferring context: 2B                                                                                    0.0s
 => [cab-frontend 1/6] FROM docker.io/library/node:18-alpine@sha256:4837c2ac8998cf172f5892fb45f229c328e4824c43c85  0.0s
 => [cab-backend build 1/7] FROM docker.io/library/maven:3.9.6-amazoncorretto-21-al2023@sha256:8d653ed25358201bdb  0.0s
 => CANCELED [cab-backend internal] load build context                                                             0.1s
 => => transferring context: 136.38kB                                                                              0.0s
 => [cab-backend stage-1 1/2] FROM docker.io/library/openjdk:21-jdk-slim@sha256:7072053847a8a05d7f3a14ebc778a90b3  0.0s
 => CACHED [cab-frontend 2/6] WORKDIR /home/cab-frontend                                                           0.0s
 => ERROR [cab-frontend 3/6] COPY package.json /home/cab-frontend/                                                 0.0s
 => CACHED [cab-frontend 4/6] RUN npm install                                                                      0.0s
 => ERROR [cab-frontend 5/6] COPY public/ /home/cab-frontend/public                                                0.0s
 => ERROR [cab-frontend 6/6] COPY src/ /home/cab-frontend/src                                                      0.0s
------
 > [cab-frontend 3/6] COPY package.json /home/cab-frontend/:
------
------
 > [cab-frontend 5/6] COPY public/ /home/cab-frontend/public:
------
------
 > [cab-frontend 6/6] COPY src/ /home/cab-frontend/src:
------
failed to solve: failed to compute cache key: failed to calculate checksum of ref 2f1ad847-6c62-4f2a-91c3-e58ef7209d25::ibusmsuotmr2zt8ktmd9hc1dt: "/src": not found

我不确定这些错误是什么意思 - 既不是输出顶部的 http2 服务器错误,也不是 COPY 的空白输出,也不是找不到“/src”。我该怎么办?

docker-compose
1个回答
0
投票

事实证明错误出在我的上下文参数上。我必须将 docker-compose.yml 文件更改为如下所示:

services:
    mysql:
        build: 
            context: ./mysql
            dockerfile: ./Dockerfile
        ports:
            - "3306:3306"
        networks:
            - cab-booking
    cab-frontend:
        build: 
            context: ./frontend
            dockerfile: ./Dockerfile
        ports:
            - "3000:3000"
        networks:
            - cab-booking
    cab-backend:
        build: 
            context: ./backend
            dockerfile: ./Dockerfile
        ports:
            - "8080:8080"
        networks:
            - cab-booking

networks:
    cab-booking:

套用某人帮助我的话:Docker 在

/
目录中运行。但我的前端 Dockerfile 将文件放入
/home/cab-frontend/
目录中。
context: ./mysql
就像在运行 dockerfile 之前告诉 docker compose 到
cd
mysql
。 语境: 。如果你的 dockerfiles 都在你的根目录下就好了。

© www.soinside.com 2019 - 2024. All rights reserved.