我试图为我的盖茨比应用程序构建Docker映像。每当我运行命令docker构建。-t gatsbyapp,它会给出一个错误:

failed to solve with frontend dockerfile.v0: failed to build LLB:
failed to compute cache key: "/.env" not found: not found

同时我的Dockerfile如下所示:

FROM node:13

WORKDIR /app

COPY package.json .

RUN yarn global add gatsby-cli

RUN yarn install

COPY gatsby-config.js .

COPY .env .

EXPOSE 8000

CMD ["gatsby","develop","-H","0.0.0.0"]

当前回答

在我看来,这个错误有很多原因。

在我的例子中,有两个错误:(1)在Dockerfile中:# syntax = *****行拼写错误(2)在docker_compose文件中。Yaml, web / build: *行指向错误的目录。

通过阅读Dockerfile文档和休息来重新集中注意力,我得到了帮助。

其他回答

可能不是OP的问题,但我在试图构建运行在Windows Linux子系统(WSL) (Debian WSL2)中的容器时遇到了这个问题,刚刚安装了Docker Compose,我所要做的就是关闭(Debian)终端并重新打开它,我的问题就解决了。

对我来说,以下是错误:

无法用前端dockerfile解决。v0: failed to create LLB definition: failed to do request: Head https://registry-1.docker.io/v2/library/postgres/manifests/13-alpine: net/http: TLS握手超时

我在Windows 10和Docker Desktop中使用WSL2,我在更新Docker Desktop到3.5版本后得到了这个问题。

我通过启用与其他发行版的WSL集成来解决这个问题。

启用它:

在Windows中打开Docker Desktop,进入设置→资源→WSL集成→启用与其他发行版的集成,并为您安装的Ubuntu应用程序启用它。

对我来说,我发现我试图从错误的目录进行构建。

在我的例子中,我有两张图片,我是从同一张图片复制的。我的具体错误是:failed to solve:未能解决与前端dockerfile。v0:创建LLB定义失败:在阶段:kubexit上检测到循环依赖

FROM karlkfi/kubexit:latest AS kubexit
COPY --from=kubexit /bin/kubexit /bin/

FROM maven:3.8-jdk-11-slim AS build

所以这是一个循环引用。解决办法:

FROM karlkfi/kubexit:latest AS kubexit

FROM maven:3.8-jdk-11-slim AS build
COPY --from=kubexit /bin/kubexit /bin/

如果你有一个类似的项目结构,

├── docker
│   │
│   ├── app
│   │   └── Dockerfile
│   └── mlflow
│       └── Dockerfile
│
└── docker-compose.yml

你可能没有在docker-compose.yml中指定build: context:

version: '3'

services:

  mlflow:
    build:
      context: ./
      dockerfile: ./docker/mlflow/Dockerfile
    container_name: ml_app_mlflow
    volumes:
      - ./db:/db
    ports:
      - 5000:5000