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:

ProjetoAmbiente
Sistema legadoPHP 5.6 + Apache
Sistema administrativoPHP 8.3 + MariaDB
Novo projetoPHP 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:

ComandoFunção
ddev startInicia o ambiente
ddev stopPara o ambiente
ddev restartReinicia os serviços
ddev launchAbre o projeto no navegador
ddev describeMostra informações do ambiente
ddev sshAcessa o container
ddev logsConsulta os logs
ddev exec php -vMostra a versão do PHP
ddev composer installInstala 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.


Links úteis