A minha pequena história sobre docker
Paulo ALmeida
04 / 02 / 2021
15:46
Em 2017, por ter abraçado um novo projecto de desenvolvimento, vi-me profissionalmente mergulhado num conjunto de conceitos, soluções e arquitecturas que eram novas para mim.
O Docker apresentou-se como uma ferramenta que me pareceu difícil de dominar - eu que não era grande utilizador de virtualização, nem um proficiente utilizador de linhas de comandos e sistemas linux.
Mas a aprendizagem que fiz na altura com Docker e Docker-Compose permitiu-me tornar cada vez mais ágil na utilização desta solução, mesmo que numa implementação específica - que é o meu "normal": aprender UMA forma de fazer as coisas e «hold-tight».
A solução implementada na altura foi evoluindo, e serviu tanto os ambientes de desenvolvimento como os de Produção. E a minha maneira de trabalhar com o PHP foi-se adaptando e, ainda mais, habituando... de tal forma que decidi usar a mesma abordagem para pequenos projectos pessoais, freelance e side-projects.
Hoje a minha implementação é a seguinte: uso um docker container que processa PHP-FPM no porto 9000, outro que disponibiliza o MySql no porto 3306, e um terceiro que serve no porto 80 um Nginx.
Neste terceiro, não estou a correr múltiplos Nginx servers (Vhosts) mas sim a fazer um Reverse Proxy que encaminha os pedidos para os meus vários projectos... para cada um destes projectos, há um container próprio, isolado, também com Nginx a executar em portos variados que o Reverse Proxy conhece.
Assim, quando tenho novos projectos, basta-me "levantar" um novo container específico e registar a sua existência no reverse-proxy.
Todos os meus containers Docker têm mapeados volumes do HOST, uma máquina virtual (VPS) que contratei na OVH.
O Mysql, por exemplo, mapeia a pasta onde são armazenados os ficheiros das bases de dados, enquanto que os containers específicos dos meus projectos mapeiam as pastas do código, que são criadas/atualizadas/geridas via GIT (github).
Esses volumes são a única coisa que é alvo de backup regular, para me garantir a possibilidade de recuperar de um "desastre"... e isso já aconteceu! Depois de uma máquina ter ficado degradada, foi-me possível com alguns comandos GIT e outros de Docker recuperar plenamente os serviços, sem grande dor de cabeça.
O que acham desta arquitectura? Tenham em conta que é um ambiente não-profissional, baixa criticidade e gerida por um one-man-IT-department(-wannabe).