繁体   English   中英

错误,“无法使用前端 dockerfile.v0 解决”

[英]An error, "failed to solve with frontend dockerfile.v0"

我试图为我的Gatsby应用程序构建我的 Docker 图像。 每当我运行命令docker build. -t gatsbyapp docker build. -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"]

在 Mac 上升级到最新的 Docker Desktop 版本后,我遇到了这个问题。 解决了这个问题的评论。

解决方案:不要使用 buildkit,它对我有用。

export DOCKER_BUILDKIT=0
export COMPOSE_DOCKER_CLI_BUILD=0

我遇到了同样的问题,我所要做的就是将 Docker 配置文件名大写:

dockerfile > 没用

Dockerfile > 确实有效

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

如果您看到这个问题,它实际上并不是真正的问题。 实际问题嵌套在某处的错误日志中。 要查看实际问题,您需要像这样运行构建命令:

DOCKER_BUILDKIT=0  docker build .

注意DOCKER_BUILDKIT=0 这将使构建工具包不会隐藏嵌套错误。 从那里你应该能够谷歌正确的解决方案。

这也会使构建在命令行中看起来不同,但不要担心。 只需查找错误。

如果您使用 Docker for Windows,则需要禁用 buildkit。 这个对我有用。

buildkit选项设置为false

{
  "builder": {
    "gc": {
      "defaultKeepStorage": "20GB",
      "enabled": true
    }
  },
  "experimental": false,
  "features": {
    "buildkit": false
  }
}

Docker for Windows buildkit 选项

如果您使用的是 Docker Desktop,重新启动 Docker 对我有用。 疑难解答重启

我有同样的问题。

码头工人文件名

  • Docker文件- 错误
  • 码头工人文件 - 错误
  • D ockerfile - 工作!

您只需要一个大写字符。

就我而言,我试图从我正在构建的 Docker 映像中的当前目录中复制文件夹wp-content 像这样:

FROM wordpress:latest

# Copy wp-content
COPY ./wp-content/ ./var/www/html/wp-content/

但是,我注意到我有一个.dockerignore文件,该文件被明确告知忽略wp-content

当我从.dockerignore中删除wp-content/时,它工作正常。

禁用macOS v11 (Big Sur) 虚拟化框架:

在此处输入图像描述

如果您使用Docker Desktop for Mac 或 Windows,您可能还必须在“Docker Engine”JSON 配置中禁用它。

Docker 桌面 →设置Docker 引擎→ 将“功能”:{ buildkit:true} 更改为“功能”:{ buildkit:false}。

就我而言,“。”之后有一个额外的空格。 在上下文选项中:

docker build -t myapp .[EXTRA_SPACE_HERE]

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

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

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

如果您稍后尝试在Dockerfile中使用文件,它将匹配通配符并且不会出现在上下文中。 向新文件添加例外或删除通配符以解决此问题。

我不记得我到底在哪里读到的,但是如果您使用WSL2并收到该错误,请删除 WSL2 主文件夹中的 Docker 配置文件并尝试重建您的映像。

也就是说,如果您已经检查了文件名并再次确认所有内容都正确命名( Dockerfile.dockerignore等)

WSL2 Ubuntu

rm ~/.docker/config.json

就我而言

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

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

有错别字,

FROM apline:3.7而不是FROM alpine:3.7

由于VPN连接,我遇到了这个问题。

我所要做的就是在Docker Desktop PROXIES部分设置一个手动代理:

在此处输入图像描述

当我用完磁盘空间时,我遇到了这个问题,大概是由于我戏弄和调整我的 Dockerfile 时积累的大量图像层缓存而加剧了这个问题。

我必须在我的~/.docker/config.json ...中设置"credsStore": "" 它以前设置为credentials.exe

在 WSL2 中,ddev 在 docker-credential-desktop.exe 启动失败,“错误列出凭据”#2342

尝试使用这个简单的解决方案,将您的dockerfile 命名为不带扩展名的 Dockerfile。

就我而言,我有两个问题:

  1. 我错过了。 在给出上下文选项的命令的末尾,以及
  2. 我在 Dockerfile 的文件名中有一个“.txt”扩展名。

经过这两次调整后,一切都按预期工作。

有时这种错误来自愚蠢的语法错误......在我的情况下,我修改了一个 Dockerfile 并删除了一些环境变量,但忘记从最后一行删除反斜杠......

    WORDPRESS_HTTPS_PORT="8443" \
    WORDPRESS_HTTP_PORT="8080" \
    WORDPRESS_SKIP_INSTALL="yes" \ <-- to be removed

EXPOSE 8080 8443
USER 0

对我来说,以下是错误:

无法使用前端 dockerfile.v0 解决:无法创建 LLB 定义:请求失败: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 桌面并转到设置资源WSL 集成启用与其他发行版的集成,并为您安装的 Ubuntu 应用程序启用它。

我遇到了同样的错误,但是将 Dockerfile 从子文件夹中移出并移到了我的应用程序的根文件夹中。 它修复了错误消息。

如果您使用 Docker for Windows,请确保将 Docker 引擎设置为与您要构建的映像匹配的模式(Windows / Linux)。

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

Dockerfile > 没用

dockerfile > 确实有效

如果您的 docker 文件位于与Dockerfile不同名称的不同路径中,您可以运行

docker build -t build_tag_name -f './path/to/dockerfile/exampledockerfile' .

我试图为我的Gatsby应用程序构建Docker映像。 每当我运行命令docker build . -t gatsbyapp docker build . -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"]

附和发生在我身上的另一种可能性:如果您正在使用构建阶段,请确保您始终使用正确的阶段名称。

我有一个定义的阶段

FROM zzz AS development

后来被用于另一个阶段

FROM development AS yyy

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

奇怪的是,对于这样一个小错误,错误消息是多么神秘……你会认为他们可能只是让错误消息说“找不到development ”之类的。

确保您使用的是相同的平台,例如,如果您构建第一个图像(my-custom-service)

FROM --platform=linux/amd64 node:14

然后您需要将--platform添加到使用第一个基本映像的其他Dockerfile

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

我在使用 WSL2 Ubuntu 时遇到了这个问题,我通过更改 Dockerfile 的权限来修复它。

当我在我的计算机上设置 WSL2 时,我将我的一些文件(包括 Dockerfile)直接从 Windows 复制到了Ubuntu 根文件夹中,这显然会导致文件具有空白权限:

---------- 1 user user 10M Jan 1 00:00 Dockerfile

为了修复它,我运行了chmod 644 Dockerfile

-rw-r--r-- 1 user user 10M Jan 1 00:00 Dockerfile

之后,Docker 能够构建镜像而没有任何进一步的问题。

就我而言,这是因为文档中的用例表达不足。 几乎所有的例子都告诉你使用. Dockerfile (大写 D),但大多没有明确说明如何自定义。

docker image build --tag any_image_tag --file any_file_name path_to_your_context_folder

我认为这个更好,我希望对来这里的人有所帮助。 any_file_name是其中包含构建说明的任何文件名,不需要其中的“dockerfile”,但如果它与上下文文件夹不同,则有助于识别并提供完整路径。 path_to_your_context_folder基本上是您的工作所在的位置,例如 Web 应用程序。

例如,以下是我当前在COPY . /app COPY . /app使用上下文文件夹作为.

docker image build --tag nested_image --file C:\WorkSpace\myapp\dockerfiles\any_file_name C:\WorkSpace\myapp\contextfiles\

PS:这个话题对同一个问题确实有有趣的答案,但有很多奇异的原因。 我的只是一个隐藏在显而易见的问题的旁注。

就我而言,我有 2 张图像,并且我是从同一张图像中复制的。 我的具体错误是: failed to solve: failed to solve with frontend dockerfile.v0: failed to create LLB definition: circular dependency detected on stage: 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/

[为我解决]

我正在使用 MacBook M1 芯片,为什么它会出现问题,因为我使用的是支持linux/amd64的映像,而我的系统架构是arm64

因此,请确保根据您的设备运行兼容的映像。

我的问题是由于使用VPN。

为了我

我打开了 Docker Desktop->open settings->Docker Engine->

{
  "builder": {
    "gc": {
      "defaultKeepStorage": "20GB",
      "enabled": true
    }
  },
  "experimental": false,
  "features": {
    "buildkit": false
  }
}

这里我的buildkit默认值为true -> 我改为false并重启docker引擎

对我有用

对于 docker 桌面,此问题通常通过添加 -f 选项来解决。 例如:让你的 docker 文件放在 c:\Dockerfile.txt

您可以运行以下命令来构建图像

docker build -f "c:\Dockerfile.txt"

我试图为我的Gatsby应用程序构建Docker映像。 每当我运行命令docker build . -t gatsbyapp docker build . -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"]

如果您使用的是适用于 Linux 的 Windows 子系统(WSL),请在启动窗口之前检查 Docker 是否正在运行。 如果您在启动窗口后启动了 Docker。 然后只需重新启动您的终端。 如果您的文件正确,它应该可以工作。

我试图为我的Gatsby应用程序构建Docker映像。 每当我运行命令docker build . -t gatsbyapp docker build . -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"]

我试图为我的Gatsby应用程序构建Docker映像。 每当我运行命令docker build . -t gatsbyapp docker build . -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"]

我试图为我的Gatsby应用程序构建Docker映像。 每当我运行命令docker build . -t gatsbyapp docker build . -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"]

我试图为我的Gatsby应用程序构建Docker映像。 每当我运行命令docker build . -t gatsbyapp docker build . -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"]

我试图为我的Gatsby应用程序构建Docker映像。 每当我运行命令docker build . -t gatsbyapp docker build . -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"]

通过设置HTTP_PROYYHTTP_PROXYS环境变量来指定代理服务器。

例子:

http_proxy=http://username:password@proxy.example.com:8080
https_proxy=http://username:password@proxy.example.com:8080

据我所知,这个错误可能有很多原因。

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

通过阅读 Dockerfile 文档并休息一下以重新获得注意力,我得到了帮助。

在我有一个用于构建多个 Dockerfile 并且其中一个 Dockerfile 被注释掉的脚本之前,我遇到过这个问题/错误。 一旦我取消注释 Dockerfile 并再次运行脚本,它对我来说工作得很好。

如果您有类似的项目结构

├── 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

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

要删除别名,请执行以下命令:

docker buildx uninstall

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

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

就我而言,我与 dockerfile 本身不在同一个目录中

还有另一种可能性:在尝试使用 Windows 10 服务器核心映像构建 Dockerfile 时,我在 Windows 10 上为 WSL 使用基于 linux 的容器。 在系统托盘中,右键单击 Docker 桌面并选择切换到 Windows 容器...

我通过在构建命令的开头添加sudo (Ubuntu) 解决了这个问题。 例如:

sudo docker build --tag somename .

我所要做的就是添加 --no-cache 作为构建的参数。

如果您正在使用v0 Dockerfile中不支持的任何新功能(例如多个构建上下文),则需要在Dockerfile开头指定Dockerfile版本

例如在Dockerfile中,第一行是:

#syntax=docker/dockerfile:1.4

我在使用 visual studio 2022 时遇到了同样的问题。问题是 visual studio 2022 建立了一个与物理目录结构不同的逻辑目录结构。 因此,该文件实际上不存在于 visual studio 2022 显示的位置。

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

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

其他答案都不适合我。 在我的例子中,问题是我在 CLI 中遇到了docker的一些权限问题,而不是修复它我只是使用sudo 所以我修复了这些权限问题(在~/.docker/buildx文件夹中)并在没有 sudo 的情况下运行 docker 并且它有效。

就我而言,我必须卸载 Astrill VPN。

我今天遇到了这个问题。 我的问题是我创建并填写了 Dockerfile 但没有保存 Dockerfile 中的更改,我尝试 CTRL + S 并再次尝试构建,对我有用))

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM