Virtual Development Server: Modern Infrastructure

Create the Foundation for easy Development

Posted by Torsten Kleiber on February 25, 2022 Tags: Docker Docker-Desktop Docker-CE Infrastructure-as-Code Linux Virtual-Development-Server Oracle Orcle-Cloud Oracle-Compute-Instance Ubuntu Vagrant VirtualBox Windows

After my 2016 series about my Virtual Development Server I have learned a lot. It’s time for a major overhaul with new technologies. It should be a lot more flexible and usable for development and course environments. See how I will restart!

There a lot of container technologies, but because of the stability of Docker I select this as the central part of my infrastructure.

I want not discuss here for the moment about orchestration of big container environments, so kubernetes and it’s friends will not an issue here.

I will do here the balancing act between following requirements:

  1. simplify the base for my infrastructure

  2. variable development environments without restrictions to host os

  3. reproducibility via Infrastructure as Code.

So the basic idea is to use for all of my different development environments a Docker Compose file, which start one to several containers with an internal network. Into this combination the changing parts like source code or persistence stores should be injected via Docker Bind Mounts or Volumes.

Docker can be provided in different ways. In future blogs I will show you at least following 3 examples.

  1. As I’m working on Windows first I will use Docker Desktop here. Docker Desktop is very stable in the meantime.

  2. Sometimes you cannot use Docker Desktop. For an example till last year my old laptop hardware and Windows License doesn’t support the virtualization layer required by Docker Desktop. So if you look at some older blog post of me I had already built my Development Server via Vagrant as Virtual Box and installed Docker there.

  3. As last example I will show you how to build an Always Free Compute Instance with Docker via Terraform in Oracle Cloud Infrastructure.

Any other way you can provide Docker will be fine too.

Maybe you will ask, why I use Ubuntu Server inside Virtual Box and Oracle Compute Instance?

  1. Sometimes in the past Docker changed the way where it allows Docker Community Edition (CE). On Ubuntu Server it is.

  2. I want to use the same OS for Virtual Box and Oracle Compute Instance to reduce my learning effort.

  3. Bento delivers regularly vagrant box builds with Ubuntu Server, which I can use.

  4. Oracle Compute Instance delivers current templates with Ubuntu Server.

Here you see the architecture overview about what I will show you in the next weeks.

virtual development server modern infrastructure

That’s it!