Subindo sua aplicação com um comando
Se você já desenvolveu alguma API com NodeJS e sempre teve a curiosidade de como fazer para que ela rodasse dentro de um contêiner do Docker, veio ao lugar certo! Este post não vai entrar em detalhes sobre o Docker e sua arquitetura, nem como desenvolver uma API com o Node. Este é um approach prático para colocar sua aplicação rodando sem enrolação!
Mão na massa
Este artigo assume que você já tenha uma aplicação em node que queira rodar em um container, mas, caso não tenha, segue abaixo um exemplo:
O primeiro passo é criar um arquivo de nome “Dockerfile” na pasta raiz do seu projeto e inserir o seguinte conteúdo:
Explicando o arquivo
- O comando FROM diz qual imagem servirá de referência para a sua aplicação. Nesse caso, a versão é a “lts”, do node.
- O comando WORKDIR diz qual será a pasta dentro do container, onde seu código vai ficar.
- O comando COPY será usado para copiar o package.json da pasta raiz para a pasta do projeto dentro do container.
- O comando RUN vai rodar o comando npm install dentro do container.
- O comando COPY terá a função de copiar todos os arquivos de dependências agora instalados para dentro da pasta do projeto no container.
- O comando EXPOSE vai mapear a porta da sua aplicação para a máquina externa.
- O comando CMD vai rodar o comando node src/server.js para que a a aplicação comece a rodar imediatamente.
Fazendo o BUILD da imagem
Dentro da pasta na qual você salvou o arquivo, rode o comando docker build -t seunome/nomedoseuapp .. Depois disso, a imagem estará registrada no Docker da sua máquina.
Rodando sua API
Agora, basta colocar a imagem para rodar com o comando docker run -p 8080:8080 -d seunome/nomedoseuapp.
Esse comando diz para o software rodar a imagem que você criou previamente, mapeando as portas do container para o PC local com o atributo “-p”, sendo o primeiro argumento a porta do pc local, e o segundo, a porta dentro do container (8080:8080). O argumento “-d” diz para o software rodar seu container em background, para que a janela do terminal não trave no processo.
Comandos úteis
Listar os containeres que estão rodando
docker ps
Mostrar o log da aplicação
docker logs seunome/nomedoseuapp
Parar o container
docker stop seunome/nomedoseuapp
Reiniciar o container
docker restart seunome/nomedoseuapp
Iniciar o container (caso esteja desligado)
docker start seunome/nomedoseuapp
Listar imagens
docker images
Remover imagens
docker images rm nomedaimagem
Listar containeres
docker container ls
Remover containeres
docker rm nomedoconteiner
Pronto! Com tudo funcionando, você já pode testar a sua API no http://localhost:8080 (sua porta de escolha) da mesma forma como faria se ela estivesse rodando dentro da pasta pelo terminal.
Gostou do conteúdo? Em nosso podcast Entre Chaves ou em nosso blog, você confere de perto mais dicas e insights como esse.