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

当前回答

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

我有一个定义的舞台

来自zzz AS开发

它后来被用于另一个阶段

FROM development AS yyy

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

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

其他回答

确保你的.dockerignore与你的文件不匹配。

有时使用.dockerignore的模式是向其添加通配符,并使用!filename语法将特定期望的文件排除到上下文中。例如:

*
!Cargo.toml
!Cargo.lock
!src
!setup.py
!README.md
!project
!requirements
__pycache__

如果您稍后尝试在Dockerfile中使用一个文件,它将匹配通配符,而不会出现在上下文中。向新文件添加异常或删除通配符来修复此问题。

对我来说

无法用前端dockerfile解决。v0:创建LLB失败定义:当前上下文中没有构建阶段

是在FROM之前设置ENV引起的。对于某些Dockerfile指令,这可能是不允许的。在移动ENV之后,FROM错误就消失了。

试试这个简单的解决方案,像这样命名dockerfile,不带扩展名。

如果你之前执行了docker buildx install,你的docker命令别名为docker buildx,它基于docker Buildkit,目前不支持(遗憾的是)Windows容器。

使用实例删除别名。

docker buildx uninstall

我希望这能为像我这样忘记这个别名的人节省时间

确保你使用相同的平台,例如: 如果使用。构建第一个映像(my-custom-service)

FROM --platform=linux/amd64 node:14

然后你需要将——platform添加到其他使用第一个基映像的dockerfile中:

FROM --platform=linux/amd64 my-custom-service