Docker Beta for Windows + Microservices project

I recently received my invitation for the Docker for Windows Beta, I’ve been testing Docker and researching about microservices for a while, so it’s a great opportunity to give my first impressions of this beta, and to start a new microservices project from scratch.

Docker Beta First Impressions

Installing the new docker beta was very simple, but it doesn’t include the option to install the basic requirements to run (Microsoft Hyper-V), or other tools like Kitematic and Git that are available from the Docker Toolbox installer. I expect this to change on the final version.

After the install and rebooting, you’re asked to install Microsoft Hyper-V so that Docker can create it’s virtual machine. I followed this tutorial to install it.

As expected from a Microsoft product, I received a very helpful error (0x80071A90). Fortunately in my case it was very simple to solve, I just had to stop Avast Antivirus shields, and the Hyper-V installation went smoothly.

After a new reboot, I ran Docker again and now it created it’s VM, and now I had a little whale icon on my taskbar with a few options, the most important is settings where you can manage the VM settings (CPUs and Memory), and a shared drives manager. You can also check for updates, view logs, send feedback, and download Kitematic as a separate download (previously was available as part of the Docker Toolbox).

When Docker is running, you have access to all docker commands on all the shells (Windows Command Prompt, Windows Powershell, Git bash, etc), it even got recognized by the PhpStorm Docker Integration plugin. Also you can access your Docker machine via the docker hostname.

Microservices Project

As my first Microservices project, I wanted to do something you may encounter on a real life project, a user management and authentication service. It will be composed by an Angular frontend, which will allow a user to register, login, and edit his information, an oAuth server handling all authentication and token validation, and a user service which will manage data persistence and retrieval for the user.