DevSecOps

4 jul, 2014

Node.js: Utilizando o docker para construir e entregar as suas aplicações

Publicidade

Para quem não sabe, existe uma ferramenta muito interessante que se chama Docker. Com ela você cria containers para empacotar um conjunto de itens e transportá-los para qualquer lugar.

Como funciona?

Basicamente você cria um sistema de gatilhos que evita a repetição de tarefas, como por exemplo rodar e instalar as dependências de uma aplicação.

Antes de começar a usar, você vai precisar instalar o Docker. Você encontra um guia aqui.

Rodando uma aplicação

Para testar se o Docker está funcionando corretamente, não vamos muito longe em relação a escrever uma aplicação. Vamos apenas utilizar a ferramenta de scaffolding que o express oferece.

[sudo] express docker-example

Com isso teremos uma estrutura padrão funcionando. Agora basta criarmos nosso arquivo para executar uma estrutura de container.

Container

Dentro da estrutura que foi gerada vamos criar um aquivo chamadoDockerfile:

FROM kaiquewdev/docker-nodejs-compiled

ADD . /usr/src/app
WORKDIR . /usr/src/app

RUN npm i

EXPOSE 3000

CMD ["node", "bin/www"]

Depois é só disparar:

[sudo] docker build .

Vamos entender o que esta acontecendo aqui.

  • A primeira linha utilizando o parâmetro FROM faz com que o Docker procure uma imagem que tenha o node instalado. Então com esta imagem ele vai disparar os outros comandos – depois de ter feito o download e executado a instalação da mesma.
  • Depois, o ADD fala para o Docker adicionar o diretório atual, criando uma referência para /usr/src/app, ou seja, dentro do container a sua aplicação estará no diretório que foi destinado (que pode ser em qualquer outro diretório que você disser para ela criar uma referência).
  • Logo abaixo, para que os comandos que você executar funcione no diretório que você quer, o comando a ser utilizado será o WORKDIR, que aponta para o diretório escolhido como fonte principal de atuação.
  • Agora que você está trabalhando no diretório apontado, você vai precisar instalar as dependências para que a aplicação funcione corretamente, então o RUN fará isso: ele executa o comando passado utilizando o bash /bin/bash -c e salva as alterações.
  • Depois que tudo estiver instalado, você vai precisar expor uma porta para conseguir acessar a aplicação do lado de fora do container. Com o EXPOSE, esta tarefa será concluída com exito.
  • Por fim, para executar a aplicação, nós utilizamos o CMD que executa um comando e não salva as alterações.

Agora, para visualizar, você vai precisar fazer o seguinte: no final dobuild terá um hash. Você deverá copiá-lo e executá-lo da seguinte maneira:

[sudo] docker run -p 3000:3000[hash]

Com isso é só visitar http://localhost:3000 utilizando o seu navegador e visualizar a aplicação funcinando.

Você pode simplesmente disparar o projeto para uma máquina virtual de hospedagem e esperar que ele seja instalado para fazer cópias desta aplicação, por exemplo, ligando várias máquinas diferentes a este container.

Hub

Para encontrar outras imagens ou dockerfiles você pode visitar o registry.

Repo

Aqui está o projeto para você utilizar como exemplo: docker-example

Até a próxima e divirta-se!