Solucionado (ver solução)
Solucionado
(ver solução)
5
respostas

Problemas como build: failed to solve with frontend dockerfile.v0: failed to read dockerfile: ... no such file or directory

Ao rodar o comando que sobe a aplicação, funciona conforme esperado:

C:\...\volume-exemplo> docker run -d -p 8080:3000 -v"$(pwd):/var/www" -w "/var/www" node npm start

Segui as instruções do curso e criei o seguinte arquivo .Dockerfile no mesmo diretório:

FROM node:latest

#MAINTAINER h2smd

COPY . /var/www/

WORKDIR /var/www/

#CMD npm install
RUN npm install

ENTRYPOINT npm start

EXPOSE 3000

Entretanto, tenho como resultado a seguinte saída:

[+] Building 0.1s (2/2) FINISHED
 => [internal] load build definition from Dockerfile                                                                                                                                       0.0s
 => => transferring dockerfile: 2B                                                                                                                                                         0.0s
 => [internal] load .dockerignore                                                                                                                                                          0.1s
 => => transferring context: 2B                                                                                                                                                            0.0s
failed to solve with frontend dockerfile.v0: failed to read dockerfile: open /var/lib/docker/tmp/buildkit-mount621976247/Dockerfile: no such file or directory

Já usei as seguintes variantes, tendo o mesmo resultado:

docker build .
docker build . -t h2smd/test
docker build -t h2smd/test "$(pwd)"
docker build -f Dockerfile -t h2smd/test .

Procurei em diversos canais, mas não consegui achar um motivo (logo, também nenhuma solução) para o caso. Acredito que não estou entendendo o que está acontecendo. Alguém entende por que ocorre e como solucionar esse problema?

5 respostas

Olá, Henrique. Tudo bem?

Você pode mandar aqui a saída do comando dir na pasta que contém o Dockerfile ou ls se estiver usando o Powershell?

Fico aguardando.

Claro, segue

PS C:\Projects\docker\persist\volume-exemplo> ls


    Diretório: C:\Projects\docker\persist\volume-exemplo


Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
d-----        01/02/2021     09:30                node_modules
-a----        01/02/2021     11:09            138 .Dockerfile
-a----        30/01/2021     21:50            264 index.html
-a----        29/01/2021     11:37            241 index.js
-a----        29/01/2021     11:37            338 main.css
-a----        01/02/2021     09:30          31280 package-lock.json
-a----        01/02/2021     09:30            283 package.json
solução!

Fala, Henrique.

O problema, ao que me parece, é que você nomeou o Dockerfile como .Dockerfile, com um "ponto" na frente. Tente renomear para Dockerfile, sem ponto.

Nossa, sério que era isso? Funcionou! Saberia dizer pq não usam um arquivo com extensão?

Olá, tudo bem?

No Linux tudo é tratado como arquivo, a extensão não é algo relevante para como o SO trata o conteúdo em si ... como funcionalidades relacionadas ao Docker vieram do Linux, esse é o comportamento padrão.

Uma dica é usar plugin no VSCode: Docker Extension (by Microsoft) e adicional o Docker Compose (by p1c2u) ... isso ajuda a debugar e ter produtividade em desenvolvimento gerenciando ambientes de container diretamente pelo VSCode.

Um abraço e bons estudos.