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?
A aplicação Node.js será executada dentro do container Docker. O Raspberry Pi ou servidor Linux será apenas o host do Docker.


2. Estrutura do projeto
Vamos trabalhar em:
/opt/docker/dolar/
├── Dockerfile
├── package.json
├── package-lock.json
└── server.jsCrie o diretório:
mkdir -p /opt/docker/dolar
cd /opt/docker/dolar3. 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 imagesDeve aparecer uma imagem semelhante a:
REPOSITORY TAG IMAGE ID CREATED SIZE
dolar-node latest xxxxxxxxxxxx ... ...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ção | Significado |
|---|---|
-d | Executa em segundo plano. |
--name dolar | Nomeia o container. |
--restart unless-stopped | Tenta reiniciar o container após reinicialização do Docker/host. |
-p 5100:5100 | Publica a porta 5100 do host para a porta 5100 do container. |
dolar-node | Imagem usada para criar o container. |
HOSTRaspberry Pi:5100-p 5100:5100CONTAINERNode.js:5100
-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 psTestar no próprio Raspberry Pi
curl http://localhost:5100Descobrir o IP do Raspberry Pi
hostname -ISe o Raspberry Pi possuir, por exemplo, o endereço 192.168.68.114, abra:
http://192.168.68.114:51008. Monitorando o container
8.1 Logs
docker logs dolarPara acompanhar continuamente:
docker logs -f dolar8.2 CPU e memória
docker stats dolar8.3 Processos
docker top dolar8.4 Configuração completa
docker inspect dolar8.5 Entrar no container
docker exec -it dolar /bin/shDentro do container:
pwd
ls
node --version
exitContainer: dolardocker logsaplicaçãodocker statsCPU / RAMdocker topprocessosinspectconfiguração
9. Parar, iniciar, reiniciar e remover
Parar
docker stop dolarIniciar novamente
docker start dolarReiniciar
docker restart dolarVer todos
docker ps -aRemover o container
docker stop dolar
docker rm dolarA imagem continua existindo:
docker imagesPara remover a imagem:
docker rmi dolar-node10. 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-nodeCódigoserver.jsdocker buildnova imagemdocker runnovo containerparar/remover container anterior
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-nodeO 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

Deixe um comentário