9
respostas

Error: "docker buildx build" requires exactly 1 argument

Ao tentar executa o comando "docker build -t moysato/app-node:1.1" aparece a seguinte mensagem no anexo e não consigo prosseguir a partir disso para resultar no final da aula a busca no navegador ("localhost:9090") utilizando o comando "docker run -p 9090:6000 -d moysato/app-node:1.2" no terminal Linux Ubuntu 22.0.4 LTS:

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

9 respostas

Oi Moyses!

Tente executar com o comando abaixo, com o ponto no final:

docker build -t moysato/app-node:1.1 .

Olá Elmo, eu já tentei o comando com o ponto final "." no final do comando, mas mesmo assim, ele aparentemente não criar o Build dentro do caminho aonde contém o docker file para executar como "uma nova imagem", dá para constatar isso executando o comando "docker ps", como pode ver no anexo, ele não executa a imagem:

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

Isso é porque o comando build não executa o container, apenas monta a imagem. Como pode ver, a imagem foi gerada.

Para listar as imagens, você precisa usar o comando:

$ docker images --all

Agora você já consegue executar o comando run para criar o container.

Decidi recomeçar do completo zero a aula. Para isso executei o comando no terminal "$ docker stop $(docker container ls -q)" , e em seguida o comando "$ docker system prune -af" para apagar todas as imagens e containers existentes no meu docker.

Após isso, recriei a imagem 1.0:

"$ docker build -t moysato/app-node:1.0 ."

em sequência conforme a aula, as imagens 1.1 e 1.2.

Porém mesmo realizando os comandos no "Dockerfile":

FROM node:14 WORKDIR /app-node ARG PORT_BUILD=6000 ENV PORT=$PORT_BUILD EXPOSE $PORT_BUILD COPY . . RUN npm install ENTRYPOINT npm start

e ao executar o comando: "$ docker run -p 9090:6000 -d moysato/app-node:1.2" e tentar visualizar no navegados Firefox, ainda continua sem acessar a imagem localmente apontado para porta 9090.

Então acreditei ser algum problema do comando executado no "Dockerfile" para isso com ajuda de um amigo programador, baixei a extenção "docker" no VS Code, e visualizando o Logs mostra nas mensagens "Executing task: docker logs o id da imagem que eu executei no terminal e em seguida o "Server is listening on port 3000". Indicando que a imagem está sendo executado na porta 3000 e não 6000. Por isso a página "Eu amo Docker!" não aparece no navegador.

Então verificando o index.js da pasta "app-exemplo" disponibilizado para download na aula, foi verificado que na parte inferior do arquivo tem um comando na parte inferior:

app.listen("3000", ()=>{

console.log("Server is listening on port 3000")

})

que pode estar impactando na execução do "docker run -p 9090:6000 -d moysato/app-node:1.2", o que poderia ser feito nesse caso?

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

Agora nessa mesma imagem se eu executar o comando pontuando a porta 9090 para 3000 "$ docker run -p 9090:3000 -d moysato/app-node:1 .2", a imagem abre no navegador normal:

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

Deixe-me ver se entendi:

  • Você quer criar uma imagem docker, em que o servidor Node seja executado na porta 6000, em vez da porta padrão (3000)?
  • E ainda você deseja que a porta 6000 dentro do container, corresponda a porta 9090 em sua rede local, para acessar no navegador pelo endereço http://localhost:9090?

Conforme mostrado na aula, e os comandos apresentados, eu segui fielmente o que foi proposto, não sei te dizer quanto a Node, pois no curso não é mencionado como é realizado esse parâmetro no Node. Somente é disponibilizado o arquivo index.js junto aos demais outros arquivos que estão compactados na pasta "app-exemplo", com objetivo somente de ser componentes para integrar a imagem desenvolvida no curso. Somente é apresentado os comandos do docker no terminal Ubuntu. Será necessário então reformulação do arquivo index.js pelo Node JS?

Moyses, peço desculpas porque não fiz este curso, mas aparentemente você está fazendo tudo corretamente com o Docker. Dei uma olhada rapidamente não localizei o código disponibilizado pelo instrutor, porém pelo que vi, ele alterou a porta dentro do arquivo index.js para que o Node fosse executado em outra porta.

Imagina Elmo, não há o que desculpar, ainda mais por que estamos buscando a aprender, desde já te agradeço por toda ajuda! Vou ver se consigo junto com o meu amigo que já é programador a descobrir qual seria a linha de comando no index.js para fazer rodar a imagem do container na porta 6000 conforme parametrizado no "Dockerfile" e em breve posto aqui o que descobrirmos. Grato por toda ajuda meu caro ;) Você é o cara!

Muito obrigado Moyses!

Apesar de hoje eu ficar mais por conta de projetar os sistemas com UX, já fui dev full-stack. Se me enviar o código do index.js aqui, eu posso te ajudar.

Só não consigl garantir hoje hahaha