I know, I know. I previously wrote about doing dev work under WSL, and you still can. In fact, my primary development machine is a Windows 10 laptop running a (WS)LAMP stack for my PHP front-end development. Sometimes Apache doesn’t quite start properly, so you’ve got to tell it to restart, but other than that, it works great once configured.
I did, however, decide to give Docker a go.
I didn’t have time to roll my own container how I’d like, so I opted to use Devilbox. It checked all the boxes for me without being overblown: Quick spin up of virtual hosts, PHPMyAdmin out of the box (not that I needed it, but sometimes its a timesaver over command line), DNS server auto-config and a host of server software versions available with a config edit. Configuration took a while, especially getting Docker to play nice with WSL. I followed what Nick Janetakis wrote on setting up Docker for Windows and WSL, and once done, I was running Devilbox nicely.. Or so I thought.
Troubleshooting issues with such a relatively esoteric configuration is an exercise in frustration. To put it simply, I was having atrocious performance.
Running a relatively heavy PHP/MySQL platform was painful. Load times were around 5-7 times what I was getting just running my (WS)LAMP stack outside Docker. At first, I thought it was my DNS configuration (which I loved in Devilbox), but.. No.
I can’t tell you how many things I tried to improve performance, but eventually, I had to drop it. I have work to do, and when I’m doing regular refreshes to test my code as well as working inside the platform’s controls, even a 5 second increase is just unacceptable.
You may be asking yourself.. “Will, Docker will run native in Windows; there’s no need to get WSL into the mix!”
You’re right, except for the fact that I do a LOT of work in WSL, and have scripts set up for everything I want to do. I live and breathe the Linux terminal.
So, until I get my new desk and can get my Linux laptop set up in my office along-side my Windows machine, Docker is just going to have to wait.