我试图为我的盖茨比应用程序构建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"]

当前回答

在我的例子中,我有两张图片,我是从同一张图片复制的。我的具体错误是: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/

其他回答

我在通过Visual Studio 2019构建Docker映像时遇到了同样的问题。我的Docker文件有一个类似Dockerfile的名字。

Dockerfile >没有工作

Dockerfile >工作

我在使用visual studio 2022时也遇到了同样的问题。问题是visual studio 2022的逻辑目录结构与物理目录结构不同。因此,该文件在visual studio 2022展示的位置上并不存在。

一旦指定了正确的位置,它就可以正常工作。

我不需要改变DOCKER_BUILDKIT=0或任何设置。但使用-f选项指定docker文件。

其他的答案都对我没用。在我的情况下,问题是我在CLI中有一些docker的权限问题,而不是修复它,我只是使用sudo。所以我修复了这些权限问题(在~/。Docker /buildx文件夹)和运行Docker没有sudo和它工作。

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

我还遇到了另一种可能性:如果您正在使用构建阶段,请确保始终使用正确的阶段名称。

我有一个定义的舞台

来自zzz AS开发

它后来被用于另一个阶段

FROM development AS yyy

一时兴起,我将开发改为开发,但只是在第一个实例中。所以后者仍然是FROM开发,而前者是AS开发。

奇怪的是,对于这样一个小错误,错误信息是多么神秘……你可能会认为他们只会给出“无法找到开发”之类的错误消息。