Olá dev, como vai? Neste artigo pretendemos mostrar como criar um ambiente de desenvolvimento que é utilizado também em ambientes de produção, usando containers e especialmente Docker.
Esse artigo é um pouco mais prático, não se atentará a explicar como Docker funciona e o contexto dos containers e imagens. Não que não seja importante conhecer esses fundamentos, mas para começar a utilizá-lo não é necessário. No final deixei alguns links com vídeos e outros artigos, caso você queira aprender mais.
O que é Docker?
Docker é um gerenciador de containers criado por Solomon Hykes e que mudou a forma de desenvolver, sendo utilizado tanto no ambiente de desenvolvimento quanto de produção.
Você consegue criar um ambiente em poucos segundos e pode começar a desenvolver um sistema que será facilmente utilizado tanto no servidor quanto em outro computador.
Sim, aquela frase “no meu computador funciona” não será mais dita.
Pré-requisitos para usar o Docker
Antes de começarmos de fato a utilizar o Docker, alguns pré-requisitos precisam ser preenchidos. São eles:
1. Ter o Docker instalado em sua máquina. Caso não tenha, segue alguns links ensinando como instalar:
2. Ter o Node.js instalado em seu computador. Deixarei apenas o link de como instalar noLinux devido à facilidade de instalação no Windows.
- Como instalar Node no Linux
1º Passo – Criar um projeto Node.js com NPM
Escolha um diretório de sua preferência e no terminal, digite o comando abaixo:
mkdir node_project
Navegue para esse diretório utilizando o comando abaixo:
cd node_project
Inicie um projeto node lembrando de colocar a tag “-y” no final para que não haja a necessidade de preenchimento dos campos:
npm init -y
2º Passo – Criando o arquivo do projeto e instalando Koa.js
O nosso app será bem básico, utilizando uma biblioteca conhecida no mundo JS chamada Koa.js. Essa lib surgiu de uma galera que se desvencilhou de um outro projeto, Express. Ela também é baseada em middlewares e facilita bastante a criação de um servidor HTTP com o Node.js. No final, deixaremos alguns links falando mais sobre o Koa caso você tenha interesse em se aprofundar sobre essa biblioteca.
Bom, antes de criar o nosso arquivo, vamos instalar o Koa como dependência do nosso projeto para podermos utilizá-lo.
npm install koa
Além do Koa,vamos instalar o Nodemon como uma dependência de desenvolvimento, que nos permitirá atualizar a nossa aplicação e ver o efeito dessa atualização em tempo real.
npm install nodemon -D
Sem mais delongas, vamos criar o nosso app.js. (FINALMENTE!)
Para que consiga testar, basta digitar no diretório do arquivo o comando a seguir:
node app.js
Acesse o seu navegador preferido, digite “localhost:3000” e voilá …
Temos um servidor rodando em nosso computador. Vamos agora para a última etapa e mais importante, colocar o servidor para rodar em um container Docker.
Último Passo – Criando uma imagem Docker e subindo um container com o nosso servidor
Agora que temos o projeto instalado, vamos criar um novo arquivo no nosso diretório chamado Dockerfile. Com ele será possível criar uma imagem e posteriormente, subir o container com a aplicação rodando via local host.
Uma dica importante, se você é como a maioria dos devs hoje em dia e utiliza o VS Code como ferramenta para desenvolver, instale a extensão do Docker para ter acesso a várias coisas legais como syntax highlighting.
Com o arquivo Dockerfile criado, digite a receita abaixo:
Pronto,vamos fazer mágica acontecer. Em seu terminal, no diretório do projeto, digite:
docker build . -t node-app
Aguarde alguns segundos, dependendo da velocidade da sua conexão, para que a imagem Node seja baixada e se a mensagem abaixo aparecer no seu terminal, está tudo ok para seguirmos adiante.
Com a imagem criada, vamos criar o nosso container e colocar ele para rodar.
docker run –name my-node -p3000:3000 -v “${PWD}:/home/node/app” node-app
Se não houve nenhum erro ao final do processo, acesse novamente o seu navegador preferido,digite “localhost:3000” e novamente… VOILÁ!
Pronto. Temos um servidor Node rodando em Docker. Viu como é fácil? Quer ver outra coisa sensacional?
Vá até o arquivo app.js no seu editor ou IDE preferido e mude o texto dentro da tag H1.
Acesse o navegador e atualize a página para ver a mágica acontecer.
Temos o nosso Node.js com Docker
Conseguimos realizar tal façanha utilizando um recurso do Docker que cria volumes e reflete toda alteração feita no arquivo que está na pasta automaticamente no containter.
Com mais algumas linhas de código, estudo sobre Docker, você será capaz de subir uma aplicação dessas em produção.
Espero que tenha gostado desse artigo prático e que tenha coçado o seu cerebelo para ir cada vez mais fundo nesse mundo Docker. Aproveitamos para sugerir outro artigo sensacional sobre um caso prático de API REST com Node. Vale a pena conferir!
Alguns links e vídeos úteis
Como prometido, segue links de outros materiais que irão te ajudar a seguir adiante:
Como criar um servidor HTTP com KoaJS: CollabCode
Como criar um servidor HTTP com KoaJS – Marco Bruno