Dockerizando aplicações – Processos de administração

Standard

Seguindo a lista do modelo 12factor, temos “Processos de administração” como décima segunda e ultima boa prática desse modelo.

admin

Toda aplicação demanda administração, isso quer dizer que uma vez implantada é possível que ela precise receber determinados comandos para corrigir possíveis problemas ou simplesmente mudar de comportamento. Como exemplos temos migrações de banco de dados, execução de scripts diversos como backup, e também execução de um console para inspeção do serviço.

Essa boa prática recomenda processos de administração executados em ambientes idênticos ao utilizado no código em execução, ou seja, seguindo todas as práticas explicadas até então.

Usando Docker, é possível rodar esses processos usando a mesma imagem base no ambiente de execução que se desejar. Tudo isso podendo se beneficiar da comunicação entre os contêineres, uso de volumes que forem necessários e afins.

Para exemplificar essa boa prática criamos o arquivo reset.py:

from redis import Redis
import signal, os

host_redis=os.environ.get('HOST_REDIS', 'redis')
port_redis=os.environ.get('PORT_REDIS', '6379')

redis = Redis(host=host_redis, port=port_redis)

redis.set('hits', 0)

Ele é responsável por reinicializar o contado de visitas do Redis. Esse comando será dado usando um contêiner diferente a partir da mesma imagem docker. Primeiro vamos iniciar o ambiente. Baixe o repositório e acesse a pasta factor12 e execute o comando abaixo:

docker-compose up 

Acesse a aplicação em seu navegador. Caso esteja usando GNU/Linux ou Docker For MAC e Windows acesse o endereço 127.0.0.1, caso esteja usando Docker Toolbox será necessário usar o ip 192.168.99.100. Você verá a seguinte frase:

“Hello World! 1 times.”

Acesse a aplicação mais algumas vezes para o marcado aumentar bastante.

Depois vamos executar o comando de administração a partir do serviço worker:

docker-compose exec worker python reset.py

O comando “python reset.py” será executado dentro de um novo contêiner, mas usando a mesma imagem de um worker regular.

Acesse novamente a aplicação e verifique se o marcado iniciou a partir de 1 novamente.

  • Luiz Gustavo Munhoz

    Fala Rafael, tudo bem cara?

    Estou realizando meu trabalho final de Sistemas de Informação.
    O motivo de entrar em contato com você, é que nosso grupo está pensando fazer o trabalho baseado em um estudo de caso de alguma empresa que adotou/utiliza Docker.
    Você conhece algumas empresas que estão trabalhando com Docker e que estaria disposto a compartilhar o conhecimento?

    Desde já agradeço, um abraço!

    • Eu trabalho com Docker, mas você pode encontrar mais pessoas sobre isso no canal dockerbr do telegram.