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

[Dúvida] Erro na execução do container node

Meu arquivo Dockerfile:

FROM node:14
WORKDIR /app-node
EXPOSE 3000
COPY . .
RUN npm install
ENTRYPOINT npm start
docker build -t cleytonscherer/app-node:1.4 .
[+] Building 1.4s (9/9) FINISHED                                                                                                                                            
 => [internal] load build definition from Dockerfile                                                                                                                   0.0s
 => => transferring dockerfile: 126B                                                                                                                                   0.0s
 => [internal] load .dockerignore                                                                                                                                      0.0s
 => => transferring context: 2B                                                                                                                                        0.0s
 => [internal] load metadata for docker.io/library/node:14                                                                                                             0.0s
 => [1/4] FROM docker.io/library/node:14                                                                                                                               0.0s
 => [internal] load build context                                                                                                                                      0.0s
 => => transferring context: 20.42kB                                                                                                                                   0.0s
 => CACHED [2/4] WORKDIR /app-node                                                                                                                                     0.0s
 => [3/4] COPY . .                                                                                                                                                     0.1s
 => [4/4] RUN npm install                                                                                                                                              1.1s
 => exporting to image                                                                                                                                                 0.1s
 => => exporting layers                                                                                                                                                0.1s
 => => writing image sha256:db156f00f01dd5eb89a85dcd8f23e4f448f629b7922f91c0378fe3943f19c037                                                                           0.0s 
 => => naming to docker.io/cleytonscherer/app-node:1.4             
docker run -p 8080:3000 -d cleytonscherer/app-node:1.4
3e2a2bee61c6dfb7f31e29a4a2b431726cc71ab646baaff4502107fa983801f5 
docker ps
CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES

Não acontece nada... também não consigo logar em http://localhost:8080

5 respostas

Olá Cleyton, tudo bem?

Confirma pra mim se sua aplicação node está ouvindo na porta 3000

Você deve modificar o comando ENTRYPOINT para especificar que o seu aplicativo Node.js deve ouvir na porta 3000:

ENTRYPOINT ["npm", "start", "--", "--port", "3000"]

Assim, o aplicativo Node.js estará ouvindo na porta 3000 dentro do container, que será mapeada para a porta 8080 do host. Feito isso você poderá acessar a aplicação em http://localhost:8080.

Otávio, fiz como você disse, mas deu mesma coisa. Meu Dockerfile atualizado:

ROM node:14
WORKDIR /app-node
ARG PORT_BUILD=6000
ENV PORT=$PORT_BUILD
EXPOSE $PORT_BUILD
COPY . .
RUN npm install
ENTRYPOINT ["npm", "start", "--", "--port", "6000"]

para fazer o build usei o comando: docker build -t cleytonscherer/app-node:1.6 .

meu sistema é um ubuntu 22.04.1

docker --version Docker version 23.0.2, build 569dd73

Olá Cleyton,

Verifique se o container está realmente em execução usando o comando docker ps -a. Se ele aparecer na lista, verifique o log do container usando o comando docker logs e veja se há alguma mensagem de erro.

Além disso, verifique se a porta 8080 do host não está sendo usada por outro processo. Você pode verificar isso com o comando sudo lsof -i :8080.

Outra sugestão é modificar a porta mapeada no comando docker run de 8080:3000 para 6000:6000, de acordo com a porta definida no Dockerfile. Assim:

docker run -p 6000:6000 -d cleytonscherer/app-node:1.6
docker ps -a
CONTAINER ID   IMAGE                         COMMAND                  CREATED          STATUS                        PORTS                                            NAMES
024b91deebff   cleytonscherer/app-node:1.8   "npm start -- --port…"   2 minutes ago    Exited (254) 2 minutes ago                                                     optimistic_shaw
docker logs 024b91deebff
npm ERR! code ENOENT
npm ERR! syscall open
npm ERR! path /app-node/package.json
npm ERR! errno -2
npm ERR! enoent ENOENT: no such file or directory, open '/app-node/package.json'
npm ERR! enoent This is related to npm not being able to find a file.
npm ERR! enoent 

npm ERR! A complete log of this run can be found in:
npm ERR!     /root/.npm/_logs/2023-03-29T23_48_32_844Z-debug.log
cleyton@deepblue:~/exemplo-node$ pwd
/home/cleyton/exemplo-node
cleyton@deepblue:~/exemplo-node$ ls -l
total 400
-rw-rw-r-- 1 cleyton cleyton 401378 mar 25 21:06 app-exemplo.zip
drwxrwxr-x 3 cleyton cleyton   4096 mar 29 20:46 app-node
-rw-rw-r-- 1 cleyton cleyton    168 mar 29 20:48 Dockerfile

cleyton@deepblue:~/exemplo-node$ cd app-node/
cleyton@deepblue:~/exemplo-node/app-node$ pwd
/home/cleyton/exemplo-node/app-node
cleyton@deepblue:~/exemplo-node/app-node$ ls -l
total 20
-rw-rw-r--  1 cleyton cleyton  257 jul 27  2017 index.html
-rw-rw-r--  1 cleyton cleyton  251 mar 26 21:30 index.js
-rw-rw-r--  1 cleyton cleyton  338 jul 27  2017 main.css
drwxrwxr-x 45 cleyton cleyton 4096 jul 27  2017 node_modules
-rw-rw-r--  1 cleyton cleyton  283 jul 27  2017 package.json
solução!

Já vi que um erro é que ao descompactar o arquivo "app-exemplo.zip" ele cria a pasta "/app-exemplo" enquanto no video o professor informa no arquivo Dockerfile a pasta "/app-node" e isso me passou batido, de certa forma, eu fui induzido ao erro... mas tudo vem, corrigindo o nome da pasta de "/app-exemplo" para "/app-node", o erro persiste, continua não encontrando o arquivo package.json

npm ERR! code ENOENT
npm ERR! syscall open
npm ERR! path /app-node/package.json
npm ERR! errno -2
npm ERR! enoent ENOENT: no such file or directory, open '/app-node/package.json'
npm ERR! enoent This is related to npm not being able to find a file.
npm ERR! enoent