Usar o Docker sempre foi uma barreira para mim, comecei no desenvolvimento web nos anos 2000 e sempre tinha usado os famosos XAMPP, MAMPP e afins, como eles instalam o servidor (apache geralmente) e PHP + Mysql, nunca tive uma necessidade grande de mudar para algo diferente.
Com a vinda do WSL no Windows 10 passei a rodar uma distribuição Linux no Windows e aposentei o XAMPP. Todavia aqui ainda tinham problemas de versão de componentes e se fizesse uma configuração errada provavelmente teria que reinstalar todo o servidor.
No final do ano passado eu voltei para o MacOS e revisitei a ideia de trabalhar com containers e tentar automatizar / padronizar o meu ambiente de produção.
O meu host principal é a Configr e eles usam Nginx + PHP + MariaDB, a minha meta foi criar um ambiente local o mais próximo possível do que eles oferecem lá, assim posso rodar local com os mesmos parâmetros do servidor de produção.
A minha abordagem foi criar 3 imagens, para separar as responsabilidades e poder rodar em versões diferentes do PHP e MariaDB.

Outro ponto importante foi criar a persistência de dados, para isso criei uma pasta oculta chamada “.docker” e nela há três sub-pastas:
Pasta | Função |
.docker/db | Persistência do Banco de Dados |
.docker/nginx | Customizações para o servidor Nginx |
.docker/php | Dockerfile customizado que é usado da imagem do PHP-FPM |
Dessa forma posso subir os containers e mata-los que sempre a configuração estará inalterada e os dados mantidos.
Para facilitar futuros projetos e compartilhar criei um repositório no github.