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.
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!
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.
Aqui está a receita de bolo:
- Instalar o Docker
- Instalar a imagem do Docker do
strong-pm
- Fazer o deploy de sua aplicação
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
.
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.
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
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
.
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!
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:
-
Melhores práticas para fazer deploy de aplicações Node em produção
-
Como testar deploy de aplicações Node.js localmente usando o Gerenciador de Processo da StrongLoop
-
Como executar o Gerenciador de Processo da StrongLoop em produção
-
Como proteger o Gerenciador de Processo da StrongLoop com SSH
-
Melhores práticas de deploy para aplicações Express com o Gerenciador de Processo da StrongLoop
-
Como criar e executar imagens Docker do Gerenciador de Processo da StrongLoop