For me, one of the discoveries of 2024, has been ddev, a tool to manage PHP (and other) environments, based on Docker images.

In the last months I have been very happy using this project. It allows me to work locally on my source files and assets while at the same time have a specific environment with the exact server configuration that I need.
Let me sum up some cases where it really came in a handy:
- I ran into ddev for the first time when trying out a sample project for craft cms. The instructions to get the project up and running were surprisingly concise:
git clone https://github.com/craftcms/europa-museum.git
cd europa-museum
ddev start
ddev craft db/restore seed.sql
- Converting an existing WordPress setup? Just run
ddev config
andddev start
. - Pull in a database dump from production? Configure a provider (ok that’s a little bit more work if you’re not on one of the predefined hosting providers)
- want to add an extra container, say ElasticSearch? no problem.
- Want to inspect the database? I run
ddev sequelace
and I’m in the database, editing the data. - run
ddev mailpit
and see the mails that have been sent out, in a Gmail like UI, or download them as a PNG screenshot - Boot that old Magento shop? Set the right PHP version, composer version, mysql version, run some terminal commands with
ddev ssh
and we’re up and running. - importing a database throws an error
Unknown collation utf8mb4_0900_ai_ci
? just switch frommariadb
tomysql
, runddev restart
and import again. - Want to run PHP with Xdebug? just drop an
xdebug.ini
in the correct config directory - I’m working on a Django setup, with extra startup scripts, an MQTT client and a Nuxt/Vue frontend and I hope to find the time to configure that for ddev as well. That would mean that starting ddev starts the full stack, all on the right ports and the paths mapped correctly
I guess it’s clear that I’m excited about this addition to my toolchain.
I’ve always been running Apache, MySQL, mkcert, MailHog through homebrew. And while that served my needs, I had to reconfigure quite a lot every time I ran brew upgrade
.
PS: last week I sent a toot at @atpfm suggesting ddev as a solution for Marco’s work on Overcast. I was happy to hear Casey read/butcher my name on the podcast 😄.