Development Environment with Docker

It is undenieable that Linux is the most popular server choice, and some software even don't run on Windows officially (Redis, HAProxy, etc).
For this past 2 years, for normal web related purpose, I have been using tools like Docker and Vagrant. Special thanks to my ex-colleague, who introduced me to this approach.

With Vagrant (and Virtual Box), you will run your code inside a headless server environment. Thanks to docker, you can separate your main processes easily, without installing the actual dependencies directly in Linux VM.
The good thing of this approach is you can try different setup (like Nginx or Apache) easier. Normally I just use Docker Compose to specify dependencies in a YAML file.

The best of all, I still code on Windows.