[英]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 Desktop,重新启动 Docker 对我有用。 疑难解答→重启
我有同样的问题。
码头工人文件名:
您只需要一个大写字符。
就我而言,我试图从我正在构建的 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
中使用文件,它将匹配通配符并且不会出现在上下文中。 向新文件添加例外或删除通配符以解决此问题。
就我而言
无法使用前端 dockerfile.v0 解决:无法创建 LLB 定义:当前上下文中没有构建阶段
是由在 FROM 之前设置 ENV 引起的。 某些 Dockerfile 指令可能不允许这样做。 在 FROM 之后立即移动 ENV 后,错误消失了。
有错别字,
FROM apline:3.7
而不是FROM alpine:3.7
当我用完磁盘空间时,我遇到了这个问题,大概是由于我戏弄和调整我的 Dockerfile 时积累的大量图像层缓存而加剧了这个问题。
我必须在我的~/.docker/config.json ...
中设置"credsStore": ""
。 它以前设置为credentials.exe 。
在 WSL2 中,ddev 在 docker-credential-desktop.exe 启动失败,“错误列出凭据”#2342
尝试使用这个简单的解决方案,将您的dockerfile 命名为不带扩展名的 Dockerfile。
就我而言,我有两个问题:
经过这两次调整后,一切都按预期工作。
有时这种错误来自愚蠢的语法错误......在我的情况下,我修改了一个 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_PROYY
和HTTP_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.