DDEV: menos configuração e mais tempo para desenvolver em PHP
Quem trabalha com desenvolvimento PHP há algum tempo sabe que nem sempre é possível utilizar a mesma versão da linguagem em todos os projetos. No meu caso, geralmente, desenvolvo sistemas novos com PHP 8 e CodeIgniter 4, mas também preciso dar manutenção em aplicações antigas, algumas ainda utilizando PHP 5.x.
Ao longo dos anos, já utilizei XAMPP, Docker Compose e Lando para organizar meus ambientes de desenvolvimento. Todas são boas ferramentas, mas, depois de experimentar o DDEV, achei sua utilização mais prática para minha rotina.
Com poucos comandos, consigo preparar um ambiente com PHP, Apache ou Nginx e banco de dados, sem precisar configurar tudo manualmente. E o melhor: cada projeto funciona de maneira independente, sem interferir nos demais.
O que é o DDEV?
O DDEV é uma ferramenta gratuita e de código aberto que utiliza o Docker para criar ambientes de desenvolvimento web.
Ele automatiza boa parte das configurações que normalmente precisaríamos fazer utilizando o Docker Compose diretamente.
Entre os recursos disponíveis estão:
- Diferentes versões do PHP.
- Servidores Apache e Nginx.
- Bancos de dados MySQL e MariaDB.
- Integração com Composer.
- Suporte a projetos PHP tradicionais, CodeIgniter, Laravel, Symfony, WordPress, Drupal e outros.
Na prática, não preciso instalar várias versões do PHP no meu Linux. Cada projeto utiliza a versão e os serviços definidos em sua configuração.
Um exemplo da minha rotina
Imagine que preciso corrigir um problema em um sistema interno desenvolvido há mais de doze anos, utilizando PHP 5.6.
Se eu tentar executar esse sistema diretamente em um servidor com PHP 8.3, provavelmente encontrarei problemas de compatibilidade, principalmente com funções que foram removidas da linguagem.
Com o DDEV, posso configurar um ambiente específico para esse sistema antigo e continuar trabalhando normalmente nos projetos mais recentes.
Por exemplo:
| Projeto | Ambiente |
|---|---|
| Sistema legado | PHP 5.6 + Apache |
| Sistema administrativo | PHP 8.3 + MariaDB |
| Novo projeto | PHP 8.4 + MySQL |
Cada ambiente possui suas próprias configurações e pode ser iniciado ou interrompido quando necessário.
Isso não significa que devemos continuar desenvolvendo novos sistemas com PHP 5. Versões antigas não recebem atualizações de segurança, mas, para manutenção de aplicações legadas em ambientes isolados, essa possibilidade é bastante útil.
O que preciso para instalar?
O DDEV funciona no Linux, Windows e macOS. Como utilizo Linux, vou mostrar os comandos para esse sistema.
Basicamente, você precisa de:
- Docker instalado e funcionando.
- Uma distribuição Linux compatível, como Ubuntu, Linux Mint ou Debian.
- Acesso ao terminal.
- Recursos suficientes para executar os containers.
Recomendo pelo menos 8 GB de RAM, embora 16 GB proporcionem mais conforto para trabalhar com vários projetos.
1. Instalando o Docker
Antes de instalar o DDEV, precisamos ter o Docker funcionando.
Já publiquei aqui no site um tutorial mostrando como instalar o Docker e o Docker Compose no Ubuntu e distribuições derivadas:
Como instalar o Docker e Docker Compose no Ubuntu e derivados
Para verificar a instalação, execute:
docker --version
docker compose version
docker run hello-world Se o Docker estiver funcionando, podemos continuar.
2. Instalando o DDEV
Uma das formas de instalar o DDEV no Linux é utilizar o script oficial:
curl -fsSL https://ddev.com/install.sh | bash Antes de executar scripts diretamente da internet, é sempre recomendável conferir sua origem e conteúdo.
Depois da instalação, verifique:
ddev version O DDEV também utiliza certificados locais para oferecer HTTPS. A configuração pode ser feita com:
mkcert -install Caso o mkcert não esteja instalado, consulte as instruções específicas para sua distribuição.
A documentação oficial apresenta todos os métodos de instalação:
Instalando o DDEV — documentação oficial
Criando um ambiente PHP
Vamos imaginar que tenho um sistema PHP dentro da pasta meu-sistema.
Primeiro, acesso a pasta:
cd ~/Projetos/meu-sistema Depois, configuro o DDEV:
ddev config --project-type=php --docroot=. Esse comando indica que o projeto utiliza PHP e que seus arquivos públicos estão na pasta principal.
Se estiver utilizando CodeIgniter 4, por exemplo, normalmente a pasta pública será public:
ddev config --project-type=php --docroot=public Agora basta iniciar:
ddev start O DDEV prepara os containers e disponibiliza um endereço local, geralmente semelhante a:
https://meu-sistema.ddev.site Para abrir o projeto diretamente no navegador:
ddev launch Pronto. Temos um ambiente PHP funcionando, sem precisar configurar manualmente o Apache ou criar um VirtualHost.
Escolhendo a versão do PHP
Esse é um dos recursos que mais utilizo.
Se o projeto precisar de PHP 8.3, posso definir:
ddev config --php-version=8.3
ddev restart Para verificar a versão utilizada:
ddev exec php -v E se precisar trabalhar com PHP 5.6?
O DDEV também oferece suporte a essa versão em ambientes compatíveis. Basta configurar:
ddev config --php-version=5.6
ddev restart Dependendo da aplicação antiga, talvez seja necessário ajustar extensões ou outras dependências.
O importante é que não preciso modificar a versão do PHP instalada no meu computador para trabalhar em cada sistema.
Trabalhando com bancos de dados
O DDEV também facilita a utilização de MySQL e MariaDB.
Se tenho um backup SQL de um sistema, posso importá-lo com:
ddev import-db --file=backup.sql Para exportar o banco:
ddev export-db --file=backup.sql.gz Isso é bastante útil quando preciso reproduzir localmente um sistema existente para realizar testes ou corrigir problemas.
Vale lembrar que backups de sistemas reais podem conter informações pessoais. Sempre que possível, utilize dados fictícios ou anonimizados no ambiente de desenvolvimento.
Comandos úteis no dia a dia
Depois que o projeto está configurado, estes são alguns dos comandos mais úteis:
| Comando | Função |
|---|---|
ddev start | Inicia o ambiente |
ddev stop | Para o ambiente |
ddev restart | Reinicia os serviços |
ddev launch | Abre o projeto no navegador |
ddev describe | Mostra informações do ambiente |
ddev ssh | Acessa o container |
ddev logs | Consulta os logs |
ddev exec php -v | Mostra a versão do PHP |
ddev composer install | Instala dependências |
Também posso executar comandos do CodeIgniter 4 diretamente no ambiente.
Por exemplo, para executar as migrations:
ddev exec php spark migrate Ou executar um script PHP:
ddev exec php meu-script.php Configurações que acompanham o projeto
Quando configuramos um projeto, o DDEV cria uma pasta chamada .ddev, onde ficam armazenadas as configurações do ambiente.
Essa pasta pode ser incluída no repositório Git do projeto.
Assim, se eu precisar trabalhar em outro computador, basta clonar o repositório e executar:
ddev start O DDEV recria o ambiente conforme as configurações do projeto. Naturalmente, o banco de dados e outros arquivos que não estão no Git precisam ser transferidos separadamente.
Isso facilita bastante quando trabalhamos com vários computadores ou em equipe.
DDEV ou Docker Compose?
O DDEV não substitui o Docker. Ele utiliza o Docker para executar os containers.
Também não significa que o Docker Compose ou o Lando sejam opções ruins.
Com Docker Compose, temos bastante liberdade para definir cada serviço e personalizar toda a infraestrutura. O Lando também facilita a criação de ambientes de desenvolvimento.
A diferença, para mim, está na praticidade.
No DDEV, grande parte das configurações necessárias para projetos PHP já está preparada. Não preciso criar um arquivo compose.yaml para cada sistema ou configurar manualmente serviços que utilizo com frequência.
Para projetos que precisam de configurações mais específicas, continuo podendo personalizar os containers.
Vale a pena utilizar?
Se você desenvolve ou mantém vários sistemas PHP, principalmente com versões diferentes da linguagem, vale a pena experimentar o DDEV.
No meu caso, ele tornou mais simples uma tarefa que antes exigia bastante configuração. Consigo trabalhar em um sistema moderno com PHP 8.3 e, quando necessário, abrir um projeto antigo com PHP 5.6, sem alterar o ambiente principal do Linux.
Já utilizei XAMPP, Docker Compose e Lando, mas atualmente o DDEV é a opção que considero mais prática para meus projetos PHP.
Menos tempo configurando o ambiente e mais tempo trabalhando no código. É justamente por isso que continuo utilizando a ferramenta.
Deixe um comentário
Participe da conversa. Seu e-mail não será publicado.