Colocando uma aplicação Node.js dentro de um container Docker

Nesse posto mostraremos desde o primeiro arquivo JavaScript até a aplicação rodando, sendo testada, monitorada, reiniciada e atualizada no Docker.

 

Índice

  1. O que vamos construir
  2. Estrutura do projeto
  3. Criando a aplicação Node.js
  4. Criando o Dockerfile
  5. Construindo a imagem
  6. Criando e executando o container
  7. Testando a aplicação
  8. Monitorando o container
  9. Parar, iniciar, reiniciar e remover
  10. Atualizando a aplicação
  11. Resumo dos comandos

1. O que vamos construir?

A aplicação Node.js será executada dentro do container Docker. O Raspberry Pi ou servidor Linux será apenas o host do Docker.

Passo a Passo do que iremos fazer e como faremos

2. Estrutura do projeto

Vamos trabalhar em:

/opt/docker/dolar/
├── Dockerfile
├── package.json
├── package-lock.json
└── server.js

Crie o diretório:

mkdir -p /opt/docker/dolar
cd /opt/docker/dolar

3. Criando a aplicação Node.js

Crie o arquivo:   nano server.js

4. Criando o Dockerfile

Agora criamos a receita que fará o Node.js existir dentro da imagem Docker:

5. Construindo a imagem Docker

Execute no diretório do projeto:

docker build -t dolar-node .

Depois verifique:

docker images

Deve aparecer uma imagem semelhante a:

REPOSITORY    TAG       IMAGE ID       CREATED       SIZE
dolar-node    latest    xxxxxxxxxxxx   ...           ...
Ponto fundamental: neste momento ainda não temos um container rodando. Temos apenas uma imagem que contém o Node.js e a aplicação.

6. Criando e executando o container

Agora transformamos a imagem em um container:

docker run -d \
  --name dolar \
  --restart unless-stopped \
  -p 5100:5100 \
  dolar-node
OpçãoSignificado
-dExecuta em segundo plano.
--name dolarNomeia o container.
--restart unless-stoppedTenta reiniciar o container após reinicialização do Docker/host.
-p 5100:5100Publica a porta 5100 do host para a porta 5100 do container.
dolar-nodeImagem usada para criar o container.

HOSTRaspberry Pi:5100-p 5100:5100CONTAINERNode.js:5100

Figura 3 — A publicação -p 5100:5100 conecta a porta do host à porta da aplicação dentro do container.

7. Testando a aplicação

Verificar se o container está rodando

docker ps

Testar no próprio Raspberry Pi

curl http://localhost:5100

Descobrir o IP do Raspberry Pi

hostname -I

Se o Raspberry Pi possuir, por exemplo, o endereço 192.168.68.114, abra:

http://192.168.68.114:5100
Resultado: o navegador acessa o Raspberry Pi, o Docker encaminha a porta 5100 para o container e o Node.js responde de dentro do container.

8. Monitorando o container

8.1 Logs

docker logs dolar

Para acompanhar continuamente:

docker logs -f dolar

8.2 CPU e memória

docker stats dolar

8.3 Processos

docker top dolar

8.4 Configuração completa

docker inspect dolar

8.5 Entrar no container

docker exec -it dolar /bin/sh

Dentro do container:

pwd
ls
node --version
exit

Container: dolardocker logsaplicaçãodocker statsCPU / RAMdocker topprocessosinspectconfiguração

Figura 4 — Quatro comandos essenciais para acompanhar o comportamento do container.

9. Parar, iniciar, reiniciar e remover

Parar

docker stop dolar

Iniciar novamente

docker start dolar

Reiniciar

docker restart dolar

Ver todos

docker ps -a

Remover o container

docker stop dolar
docker rm dolar

A imagem continua existindo:

docker images

Para remover a imagem:

docker rmi dolar-node
Importante: container e imagem são objetos diferentes. Remover o container não significa remover a imagem.

10. Atualizando a aplicação

Suponha que server.js foi alterado. O container que já está rodando não recebe automaticamente a alteração.

O processo é:

docker build -t dolar-node .

docker stop dolar
docker rm dolar

docker run -d \
  --name dolar \
  --restart unless-stopped \
  -p 5100:5100 \
  dolar-node

Códigoserver.jsdocker buildnova imagemdocker runnovo containerparar/remover container anterior

Figura 5 — Alterou o código? Construa uma nova imagem e recrie o container.

11. Resumo: o ciclo de vida Docker

# Criar diretório
mkdir -p /opt/docker/dolar
cd /opt/docker/dolar

# Construir imagem
docker build -t dolar-node .

# Listar imagens
docker images

# Criar e executar container
docker run -d \
  --name dolar \
  --restart unless-stopped \
  -p 5100:5100 \
  dolar-node

# Ver containers ativos
docker ps

# Ver todos os containers
docker ps -a

# Ver logs
docker logs dolar

# Acompanhar logs
docker logs -f dolar

# Monitorar CPU/RAM
docker stats dolar

# Ver processos
docker top dolar

# Inspecionar
docker inspect dolar

# Entrar no container
docker exec -it dolar /bin/sh

# Parar
docker stop dolar

# Iniciar
docker start dolar

# Reiniciar
docker restart dolar

# Remover container
docker rm dolar

# Remover imagem
docker rmi dolar-node

O conceito que devemos guardar

Código → Dockerfile → docker build → Imagem → docker run → Container → logs / stats / inspect

O ponto mais importante deste tutorial é entender que o Node.js usado pela aplicação está dentro do ambiente criado pela imagem Docker. O host fornece o sistema operacional e o Docker executa o container isoladamente.

12. Próximo passo: uma cotação real

Neste tutorial a cotação R$ 5,45 é propositalmente fixa, para manter o foco no Docker. Em uma aplicação real, podemos fazer o Node.js consultar uma API de câmbio, retornar JSON e atualizar a cotação automaticamente.

A evolução natural será:

Internet
   │
   ▼
API de cotação
   │
   ▼
Node.js dentro do Docker
   │
   ▼
REST API
   │
   ├── /cotacao
   └── /health
   │
   ▼
Navegador / outro sistema

 

Node.js + Docker — Tutorial práticoMaterial preparado como referência para aplicações Node.js executadas em containers Docker, incluindo uso em Raspberry Pi e servidores Linux.

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *