Neste artigo, exploramos o motivo por trás do erro " falha ao resolver com o frontend dockerfile.v0 " e apresentamos várias maneiras (5) de corrigi-lo. Este erro está relacionado ao componente Buildkit e LLB do Docker.
O erro: falha ao resolver com frontend dockerfile.v0
- Correção 1: desativar o Buildkit do Docker
- Correção 2: verifique se o Dockerfile está nomeado corretamente
- Correção 3: especifique o nome do arquivo em docker-compose.yml
- Correção 4: Excluir a semente do token
- Correção 5: desative o Buildkit nas configurações
O erro a seguir resume o caso desse erro:
Erro: falha ao resolver com frontend dockerfile.v0
Falha ao calcular a chave do cache: /.env
não encontrado: não encontrado erro do remetente: contexto cancelado erro rpc: code = Desconhecido desc = falha ao analisar
e mais.
Origem do erro: Componente Modcache, Buildkit ou LLB no Docker
Quando o erro vem? Ao criar um arquivo do Docker
Número de correções possíveis: 5
O erro: falha ao resolver com frontend dockerfile.v0
Ao criar um Docker usando o comando a seguir, você pode encontrar um erro específico que atuará como um bloqueador.
docker build . -t opengenus
A seguir está o erro que você pode obter, dependendo do seu ambiente:
failed to solve with frontend dockerfile.v0: failed to build LLB:
failed to compute cache key: "/.env" not found: not found
OU
failed to solve with frontend dockerfile.v0: failed to build LLB:
error from sender: context canceled
Isso pode ser atribuído a um problema conhecido com o Modcache ou Buildkit no sistema Docker. Pode haver outras fontes desse erro e, como apresentamos várias soluções.
- LLB significa Low Level Build e é um formato binário usado internamente pelo Docker. Ele usa uma estrutura de dados de gráfico.
- Frontend é o componente no Docker que converte o formato de compilação do Docker definido para LLB.
- O erro acontece nesta etapa.
Os seguintes componentes são a fonte deste erro:
- Nuildkit
- LLB
- Frontend (ocorre um erro nesta etapa)
Buildkit é um novo utilitário no Docker que substitui o construtor legado. Possui um recurso para reutilizar dockerfiles para desempenho ideal e lidar com situações complexas. Foi observado que o utilitário não funciona bem com todos os arquivos docker herdados e, portanto, o erro ocorrerá. A correção é desabilitar o Buildkit usando as duas variáveis de ambiente a seguir:
export DOCKER_BUILDKIT=0
export COMPOSE_DOCKER_CLI_BUILD=0
Depois disso, tente construir o Docker novamente e o erro será corrigido:
docker build . -t opengenus
Dependendo do ambiente do sistema, se essa correção não funcionar, vá para a próxima correção. Você não precisa reverter as alterações nesta correção.
Certifique-se de que o arquivo docker seja nomeado como " Dockerfile " exatamente e não como outras variantes como "DockerFile", "dockerfile" e outros.
O comando docker busca esse arquivo diferenciando maiúsculas de minúsculas e, se for nomeado incorretamente, o comando docker não consegue encontrar o arquivo de configuração e, portanto, o erro pode ocorrer.
Se a correção acima não funcionar, podemos tentar especificar o nome do arquivo Docker no arquivo docker-compose.yml para garantir que o Docker selecione o arquivo correto superando o componente Modcache.
Por padrão, docker-compose.yml terá a seguinte aparência:
version: "3"
...
build:
context: ../.
dockerfile: .
Deve ser atualizado como:
version: "3"
...
build:
context: ../.
dockerfile: Dockerfile
Observe a última linha onde o nome do arquivo é especificado.
Se você estiver usando o MacOS e receber este erro:
failed to solve with frontend dockerfile.v0: failed to create LLB definition:
rpc error: code = Unknown desc = failed to parse
/Users/opengenus/.docker/.token_seed: unexpected end of JSON input
A correção simples é excluir os 2 arquivos a seguir no diretório /Users/opengenus/.docker/:
- .token_seed
- .token_seed.lock
Isso iniciará uma nova compilação, ignorando os componentes em cache das compilações anteriores do Docker com falha.
Na Correção 1, tentamos desabilitar o Buildkit por meio de variáveis de ambiente. Em alguns casos, quando o Docker é usado em um sistema Desktop executando Windows ou MacOS, precisamos desativá-lo nas configurações.
Desabilite o buildkit na configuração JSON "Docker Engine" (no Docker no sistema desktop). As etapas são as seguintes:
- Abra os aplicativos do Docker Desktop
- Vá para as configurações
- Vá para "Mecanismo Docker"
- Atualize o valor true para buildkit para false na seção de recursos.
# Change this line
"features": { buildkit: true}
# to
"features": { buildkit: false}
Isso deve finalmente corrigir o erro e você pode prosseguir com a criação do arquivo Docker.
O Docker é uma ferramenta importante com vários componentes que podem não funcionar bem com arquivos legados do Docker. Resolver esses erros e continuar a criar arquivos do Docker é fácil se você encontrar a correção certa, conforme apresentado neste artigo no OpenGenus.
Com este artigo da OpenGenus, você deve ter a ideia completa de como resolver este erro do Docker com sucesso.