I just upgraded my laptop to Windows 10. I am a Docker fan, so was keen to try out the Docker 1.12 public beta with the new Windows 10 Hypervisor. However, I also use Vagrant. I thought I would share a few unexpected things I encountered. And of course, I am interested in the best way to make Magento development easier, my primary driver behind all this at the moment.
First Docker. I grabbed the 1.12 public beta (as I write this post its July 20, 2016), installed it, everything went pretty well. There were some interesting extra steps around needing to provide my username/password to access the file system (volume mounting silently failed without this). Kitematic was not included out of the box (I read somewhere else they were still deciding what to do here). But once I got all the settings right, seemed pretty good.
Unfortunately for me, I can confirm the inotify support in the Mac OSX port is not present in Windows (yet). I am particularly interested as I would like to run “grunt/gulp” inside the Docker container and have it spot file changes on the native file system (mounted as a volume). That way these tools can see “file changed” events and rerun the compilation automatically – a useful feature for frontend developers. I still have a personal preference to keep the code on my native laptop, to allow the IDE to access files directly and so I can wipe a VM/Docker container with zero concern to losing any source code or changes.
But I could spin up processes etc, and all without Virtualbox installed. Cool!
(Oh, I did hit a problem getting Cygwin installed, but that turned out to be my new anti-virus software. It considered mintty.exe a risk – the terminal emumlator in Cygwin.)
Then I tried to start up Vagrant. Fail! After much hair pulling I finally discovered you cannot use VirtualBox with the native Windows 10 HyperV support turned on. Something about level 1 and level 2 hypervisors. A bit of searching showed Vagrant has a HyperV provider, but Vagrant boxes seemed tied to providers, so many existing Vagrant boxes would not work. Turning off HyperV was not hard, but required a machine reboot. After that VirtualBox ran fine, Vagrant is up and going again.
But this is a bummer for myself – switching between Vagrant and Docker will require a machine reboot. Oh well.
The last bit of interesting news however that I came across was news of the Anniversary Edition of Windows 10 coming out in August (2016). It appears there may be the ability to run Ubuntu bash commands in a window, built on top of the Windows kernel! It is not virtualization, it does not support GUI commands, but it might be an easier way to get grep and rsync command line tools without futzing around with Cygwin. It will be interesting to try that out when available.
So is Windows 10 going to make development easier? Hmmm. We shall see. If you have the choice, I would say a Mac will be easier today. I am probably going to borrow a Mac for a while to try out the Docker inotify support in 1.12 first hand, but I still have a personal preference to run an IDE natively on my laptop with all the MySQL, web server, grunt/gulp etc tools inside a Docker (or Vagrant) container making them easier to upgrade and flip between projects.