top of page

Dockerize seu App: Consistência e Performance em 3 Minutos

  • Foto do escritor: Luis Felipe
    Luis Felipe
  • 27 de abr.
  • 3 min de leitura

Atualizado: 28 de abr.

"Na minha máquina funciona!" – Se você já ouviu isso, sabe que o problema geralmente não é o código, mas o ambiente. Normalmente se usa o Docker para garantir que o software rode exatamente igual em qualquer lugar. Mas por que ele se tornou o padrão da indústria?


O que é o Docker e por que ele é melhor?


Muitos confundem Docker com Máquinas Virtuais (VMs), mas a diferença de performance é brutal:


  • Máquina Virtual (VM): Roda um sistema operacional (SO) completo para cada aplicação. Isso consome gigabytes de RAM e muito processamento, pois cada VM simula até o hardware.


  • Docker: Ele compartilha o núcleo (kernel) do sistema operacional da sua máquina. O Docker apenas isola o processo da aplicação.


  • Resultado: Enquanto uma VM demora minutos para ligar e "come" a memória do seu PC, um container Docker sobe em milissegundos e gasta apenas o que a aplicação realmente precisa.



1. Entendendo os Conceitos: Imagem vs. Container


Antes do código, entenda o fluxo:


  1. Dockerfile: É um arquivo de texto contendo todas as instruções necessárias para criar o seu ambiente. Pense nele como uma "receita de bolo" detalhada: ele diz ao Docker qual sistema usar, quais arquivos copiar e quais comandos executar.

  2. Imagem (O Build): Quando você "builda", o Docker transforma a receita em um pacote estático e imutável chamado imagem. A imagem é o "bolo pronto", mas que ainda está na vitrine (não foi consumido/executado). Importante: O Docker não espelha o seu código em tempo real por padrão. Se você mudar uma vírgula no seu código fonte (como em um arquivo .js ou .html), você precisa buildar a imagem novamente para que essa mudança seja "assada" dentro dela.

  3. Container: É quando você tira o bolo da vitrine e o serve. Você pode servir vários pedaços ao mesmo tempo; é a imagem em execução. Você pode criar N containers a partir de uma única imagem (ex: rodar 5 instâncias da mesma API em portas diferentes).



2. O Exemplo: Aplicação Node.js


Para este tutorial, utilizaremos como exemplo uma aplicação simples em Node.js. O primeiro passo é garantir que temos os arquivos do projeto (como o app.js para o código e o package.json para as dependências) na mesma pasta onde criaremos nosso Dockerfile.


Imagem ilustrativa da Aplicação do Node.js


3. O Dockerfile (A Receita)


Crie o arquivo Dockerfile na raiz:


Imagem ilustrativa - criação do arquivo Dockerfile


4. Build e Run: Transformando Código em Container


Agora, vamos ao terminal.


Passo A: O Build Aqui o Docker lê sua receita e cria a imagem. Lembre-se: alterou o código? Rode o build de novo!


No terminal, execute o comando abaixo:


docker build -t amora-app:v1 .

Entendendo o comando:


  • docker build→Comando base para criar uma imagem.


  • -t → Abreviação de "tag", serve para dar um nome e uma versão à imagem.


  • amora-app → O nome que escolhemos para a nossa imagem (você pode alterar para o nome do seu projeto).


  • :v1 → A versão da imagem. Útil para controle de alterações.


  • . → Indica que o Docker deve procurar o arquivo Dockerfile na pasta atual.


Passo B: O Run (Container) Agora instanciamos a imagem. Vamos mapear a porta 8080 do seu PC para a 3000 do container:


docker run -d -p 8080:3000 --name meu-primeiro-container amora-app:v1

O -d roda em "background", liberando seu terminal.


Imagem explicativa - Transformando código em container
Imagem explicativa - Transformando código em container


5. Resultado e Verificação


Abra o navegador em localhost:8080. Se quiser ver que o Docker realmente isola as coisas, você pode rodar outro container na porta 8081 usando a mesma imagem!


Imagem ilustrativa - Resultado


Conclusão


O Docker não é apenas sobre "funcionar em todo lugar", é sobre eficiência de recursos e agilidade no deploy. Agora que você tem sua imagem pronta, o próximo passo é levá-la para a nuvem.


Confira o código e o tutorial completo no meu repositório: https://github.com/Luis-03-2004/docker-guide

Comentários


bottom of page