Docker: Node.js + Express.js — Um “Olá Mundo!” muito simples
Bom dia / boa tarde / boa noite
Nesse passo a passo vamos provisionar, de forma muito simples, um container NodeJs utilizando o ExpressJs para nos ajudar nessa tarefa. Mas o que é NodeJs e ExpressJs?
Node.js® é um runtime JavaScript desenvolvido com o Chrome’s V8 JavaScript engine. Como um ambiente de execução JavaScript assíncrono orientado a eventos, o Node.js é projetado para desenvolvimento de aplicações escaláveis de rede.
Express.js é um popular framework web estruturado, escrito em JavaScript que roda sobre o ambiente node.js em tempo de execução. Com ele é possível configurar o seu ambiente de desenvolvimento, executar tarefas comuns de desenvolvimento e implantação da web.
Pré-requisitos:
Docker Desktop: https://www.docker.com/products/docker-desktop
NodeJS: https://nodejs.org/pt-br/download/
Editor de Texto: Qualquer editor de texto de sua preferência.
Bora codar?
Primeiramente vamos criar um novo diretório para conter nossa aplicação.
Agora vamos abrir esse diretório no terminal. Eu vou utilizar o git-bash, mas pode ser utilizado qualquer terminal de sua preferência.
No terminal, digite: npm init e diga o passo a passo de criação de um novo projeto npm.
Agora vamos instalar o nosso framework, o ExpressJs. Para isso basta digitar o comando: npm i express -S
Neste ponto, o nosso diretório deverá estar assim:
Vamos abrir o nosso diretório no editor de texto e vamos criar um novo arquivo chamado index.js.
Vamos seguir o modelo de Single File Application e vamos definir tudo que é necessário para o nosso “Olá Mundo!” dentro de um único arquivo.
E agora?
Agora vamos criar um script para facilitar nossa vida e vamos utilizar o nodemon para executar nossa aplicação.
Nodemon é uma ferramenta que ajuda a desenvolver aplicativos baseados em node.js, reiniciando automaticamente o aplicativo de nodejs quando mudanças de arquivo no diretório são detectadas.
No arquivo package.json, na chave scripts, vamos adicionar uma nova chave/valor: “start”: “npx nodemon index”
Novamente abrindo qualquer terminal, execute o comando: npm start e pronto. Sua aplicação estará disponível na porta 3000.
Abra o link localhost:3000 e veja:
Mas e o Docker?
Vamos criar um arquivo dockerfile e vamos utilizar a imagem oficial do node a node:14.17.5-buster-slim. No dia que estou escrevendo esse artigo, essa é a versão LTS do NodeJS. Abaixo vemos o nosso arquivo dockerfile:
Para ajudar a fazer o build da nossa imagem docker e provisionar o nosso container, vamos criar um arquivo auxiliar de scripts (sh).
É possível criar um .bat (cmd e powershell) se preferir.
Execute o arquivo como preferir, a primeira vez que for executado, os dois primeiro comando do arquivo não serão executados com sucesso por ainda não existir a imagem e o container. Vai demorar um pouquinho para baixar as imagens e fazer o cache.
A partir da segunda vez, o docker é capaz de encontrar os pontos de alteração e reconstruir as camadas caso necessário. Pronto, sua imagem docker foi criada e seu container está provisionado com sucesso!
Até a próxima!