Skip to content

Instantly share code, notes, and snippets.

@igorlima
Last active August 29, 2015 14:23
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save igorlima/975f16e0d71f9c231c18 to your computer and use it in GitHub Desktop.
Save igorlima/975f16e0d71f9c231c18 to your computer and use it in GitHub Desktop.

Caso você não tenha acompanhado as últimas novidades, anunciamos recentemente uma nova versão do Gerenciador de Processo StrongLoop.

O que é o Gerenciador de Processo da StrongLoop? é um gerenciador corporativo runtime para processo Node.js em produção. O Gerenciador de Processo da StrongLoop foi construído para manipular tanto o escalonamento vertical e horizontal de suas aplicações Node com facilidade.

Um dos recursos mais interessantes da nova versão é o suporte ao Docker.

docker image

Neste blog vou mostrar como instalar e usar a imagem oficial do Docker do Gerenciador de Processo da StrongLoop. Pronto para começar?

curl -s https://strong-pm.io/docker.sh | sudo sh

O serviço criado vai utilizar a porta 8701 para a API do Gerenciador de Processos e a porta 3000 para a sua aplicação. Se o servidor for reinicializado, o gerenciador de processo será reiniciado automaticamente.

Simples assim!

Bom, só isso não iria satisfazer aqueles que queiram saber como as coisas funcionam, não é? Então, eu vou explicar como aquele pedaço de script faz todo o trabalho, mas para isso vamos ter que fazer isso de um jeito mais difícil!

Requisitos

Configurar um servidor pode ser desencorajador, e instalar o Node em um servidor nem sempre é tão lindo como um passeio no parque. Felizmente, estamos falando sobre o Docker aqui, então vamos balançar uma varinha de condão e fazer com que todos os nossos problemas vão embora! Bom, nem todos os problemas, mas pelo menos alguns. Veja o que é preciso ter no servidor:

  • Um host (físico ou virtual) capaz de rodar o Docker. Eu recomendo algo baseado no RHEL/Fedora devido a proteção extra oferecida caso o seu container do Docker estiver quebrada.

  • Só isso! E não é preciso instalar o Node no servidor!

Veja o que é necessário em sua estação de trabalho:

  • Node (então você pode instalá-lo via npm install -g strongloop)

Já que este artigo é sobre deploy, e não sobre desenvolvimento então eu não vou cobrir essa etapa de instalação do Node em seu ambiente de desenvolvimento.

Procedimento

Aqui está a receita de bolo:

  • Instalar o Docker
  • Instalar a imagem do Docker do strong-pm
  • Fazer o deploy de sua aplicação

Instalando o Docker

Há muitos (muitos, muitos) artigos escritos sobre como instalar o Docker. Pessoalmente, eu encontrei a documentação oficial muito melhor. Se você está com pressa e está rodando o Ubuntu, Debian, Linux Mint, Fedora, AWS Linux, CentOS ou RHEL e se você estiver executando a versão que foi lançada no ano passado ou superior, há uma linha de comando que você pode usar para instalar:

curl -sSL https://get.docker.com/ | sudo sh

Se você não estiver com sorte e isso não funcionar para você, você provavelmente vai ter que ler a documentação.

Fica aqui uma dica! Eu recomendo seguir as instruções para o Docker sudo-less.

Instalando a imagem do Docker strongloop/strong-pm

Em suma, o que precisamos fazer agora é baixar a imagem do Docker do strong-pm, inicializá-la e depois configurar um script de inicialização para certificar que será executada toda vez que o servidor for reiniciado.

Convenientemente, se o Docker é instruído a executar uma imagem que não tem sido carregada ainda, ele vai fazer isso automaticamente. Isso significa que você pode cobrir esses dois primeiros passos com o seguinte comando:

docker run —detach —restart=no \
—publish 8701:8701 —publish 3000:3000 \
—name strong-pm-container \
strongloop/strong-pm

Ótimo! Agora você tem a imagem do Docker strongloop/strong-pm, e um novo container inicializado em background (--detach) com o nome my-app-pm. Além disso, já foi dito para publicar o container com as portas 8701 e 3000 e o host com as portas 8701 e 3000, respectivamente.

Caso você não se importa da sua aplicação voltar logo após uma reinicialização do servidor, e queira terminar essa parte por aqui, então você pode ir direto para a seção “Fazendo o Deploy de sua aplicação”.

Se você quiser configurar algo mais próximo de produção, nós temos um passo a mais a seguir.

Se você se preocupa com o tempo de atividade de sua aplicação, então o mínimo que pode ser feito é certificar-se de que a aplicação irá reiniciar caso ela trave. A boa notícia é que você já está executando sua aplicação em um gerenciador de processos que vai reiniciar a sua aplicação para você. Mas que tal uma reinicialização do servidor? Nenhuma quantidade de JavaScript pode te salvar de uma queda de energia, então você tem que buscar ajuda no sistema operacional.

Aí que entra o Upstart e o systemd. Se você teve sorte suficiente ao digitar a linha de comando da seção “Instalando o Docker”, então há uma boa chance de você está executando um sistema que já vem com o Upstart.

Se você já usou o ‘systemd’ Kool-Aid, então você pode seguir essas instruções.

Upstart

Se você estiver com pressa, você pode simplesmente copiar e colar o exemplo a seguir em ``/etc/init/strong-pm-container.conf```:

description “StrongLoop Process Manager Container”
author “StrongLoop <callback@strongloop.com>”
start on filesystem and started docker
stop on run level [!2345] respawn
exec /usr/bin/docker start -a strong-pm-container

systemd

Você vai precisar criar um destino como este:

[Unit] Description=StrongLoop Process Manager Container
Author=StrongLoop <callback@strongloop.com>
After=docker.service
[Service] Restart=always
ExecStart=$DOCKER start -a strong-pm-container
ExecStop=$DOCKER stop -t 2 strong-pm-container [Install] WantedBy=default.target

Parecido com o que foi feito na seção Upstart, aqui será tão simples quanto, você provavelmente só precisa copiar o exemplo acima do systemd e colar em /etc/systemd/system/strong-pm-container.service.

Fazendo o Deploy da aplicação

Tudo bem, agora que instalamos o Docker e uma instância do Gerenciador do Processo StrongLoop, estamos prontos para o deploy da aplicação. Esta etapa é fácil:

slc deploy http://docker-host:8701/

Agora que você já sabe o jeito mais difícil, vai poder sempre usar o script que apresentamos no início do blog. Tenha um feliz deploy!

E o que mais?

Assista uma demonstração! Confira este curto vídeo que vai lhe dar uma visão geral do Gerenciador de Processo da StrongLoop.

Cadastre-se no webinar! “Melhores práticas para fazer deploy de aplicações Node.js em produção” em 16 de abril com a StrongLoop e o desenvolvedor do núcleo Node, Sam Roberts.

Nas próximas semanas, procure aprimorar ainda mais sobre o Gerenciador de Processo da StrongLoop e seus recursos runtime. Por enquanto, aqui está uma lista de alguns artigos técnicos adicionais para você aprofundar com mais detalhes sobre como aproveitar ao máximo este lançamento:

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment