Categorias
Desenvolvimento DevOps Infraestrutura Node.JS

Docker na prática

Para quem caiu de paraquedas neste artigo e não sabe o que é Docker, no artigo O que é Docker? eu faço uma básica explicação teórica sobre o Docker. Agora vamos ver na prática como realizar o deploy, e rodar uma aplicação em Node.js utilizando o Docker.

Neste artigo estou utilizando o sistema operacional Linux Lubuntu. Primeiramente realize a instalação do Docker caso não o possua. Para instalação veja no site oficial do Docker um passo a passo de como instalar e configurar o Docker em seu sistema operacional.

Após realizar a instalação do Docker, pelo terminal Linux vamos realizar o download da imagem do Node.js. Uma imagem Docker é um template utilizado para a criação de um container. Nela temos todos os arquivos e softwares, necessários para o funcionamento de nosso container. O Docker hub é um repositório onde existem várias imagens já prontas, que podem ser utilizadas na criação dos containers. Vamos utilizar a imagem oficial do Node.js como base, para criarmos nossa própria imagem de nossa aplicação. Utilize o comando abaixo para download da imagem do Node.js:

docker pull node

Após o download para visualizar as imagens disponíveis em nossa máquina utilize o comando:

docker images

Aplicação Node.js

Para exemplificar este artigo, vamos utilizar a aplicação criada no artigo: API HTTP+REST – Conceito e exemplo em Node.js. Realize o download ou clone a aplicação no meu GitHub: https://github.com/andersonirias/api-http-rest. Depois acesse o diretório raiz da aplicação onde vamos criar o arquivo Dockerfile.

O Dockerfile é o arquivo que utilizamos, para colocar os comandos utilizados no processo de criação de uma nova imagem Docker. Crie um arquivo chamado Dockerfile e insira o conteúdo abaixo no mesmo.

FROM node

# Diretório da aplicação
WORKDIR /usr/src/app

# Realiza a cópia do arquivo package que contém as dependências do projeto
COPY package*.json ./

# Realiza a instalação das dependências do projeto
RUN npm install

# Realiza a cópia dos arquivos do projeto
COPY app.js .
COPY usuarios.json .

EXPOSE 9090
CMD [ "node", "app.js" ]

O Dockerfile possui vários comandos que podem ser utilizados na criação da imagem, em nosso exemplo utilizamos os comandos:

  • FROM – Inicia um novo estágio de construção é define uma imagem base para as próximas instruções.
  • WORKDIR – Define o diretório onde está a aplicação.
  • COPY – Copia arquivos para a imagem.
  • RUN – Executa o comando e confirma os resultados.
  • EXPOSE – Informa ao Docker quais portas a aplicação utiliza.
  • CMD – Executa um comando na inicialização do conteiner.

Agora para criarmos nossa imagem, estando no mesmo diretório onde se encontra o Dockerfile na raiz do projeto utilizamos o comando:

docker build -t api-http-rest .

Substitua o api-http-rest pelo nome que deseja para a imagem. Uma observação não se esqueça do . no final do comando, ele indica que o arquivo Dockerfile que será utilizado para a construção da imagem, está no diretório onde o comando foi executado. Utilize o comando abaixo para visualizar a nova imagem que foi criada:

docker images

Criando o container

Utilize o comando docker run para criar e dar start ao novo container com base na imagem que criamos:

docker run -p 9090:9090 --name node_api -d api-http-rest

No comando docker run acima, utilizamos as seguintes opções:

  • -p – Realiza o redirecionamento de uma porta pública da máquina host para uma porta privada dentro do container.
  • –name – Nomeia um container.
  • -d – Detached. Os containers iniciados no modo detached, são encerrados quando seu processo raiz utilizado na execução do container é encerrado. Ou seja o container é atrelado ao seu processo raiz no caso de nosso exemplo ao comando node app.js.

No final do comando temos o nome da imagem utilizada para a criação do container. Para visualizar o novo container criado utilize o comando:

docker ps

Para visualizar as informações que nossa aplicação imprime no console utilize o comando:

docker logs node_api

Substitua node_api pelo nome do container. No artigo  API HTTP+REST – Conceito e exemplo em Node.js é descrito como podemos realizar um teste completo de nossa aplicação. Mas caso deseje realizar apenas um teste rápido, utilize o curl ou mesmo abra em seu navegador de internet http://localhost:9090/api?usuario_id=1.

curl -i http://localhost:9090/api?usuario_id=1

Assim concluímos este tutorial básico de utilização do Docker. Para mais informações sobre comandos veja no site oficial do Docker.

2 respostas em “Docker na prática”

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *