Docker Compose

While I was working for Trading Technologies, we always planned on using Linux Containers to provide secure hosting of user-written TT SDK algos. Docker was supposed to be the way of ensuring proper isolation, resource management, as well as means of convenient deployment of client strategies. The infrastructure was in place, but I left before we had a chance to materialize our plans.

Recently I decided to give Docker another go, this time as a way of managing my various cloud projects. I was happy with DigitalOcean’s offering, so I began migrating my websites and jobs to their cloud. Everything, of course, is containerized and managed together. I am using Ubuntu 14.04 with Docker Compose.

I must say I am pleased with the results. The migration has been rather painless, and I like how simple the config ended up. I am running a container with a shared MariaDB (MySQL) database, a reverse-proxy Nginx to manage routing, several WordPress blog containers, few C# ASP.NET sites (Mono, not CoreCLR), some Python sites (Flask), and bunch of Python/C++ apps. A sample docker-compose.yml file is shown below.

As you can see, I am using dmp1ce/nginx-proxy-letsencrypt image as a web proxy. Just like with jwilder/nginx-proxy, it’s dead simple to configure routes. All a container needs to do is to specify variable, and the web traffic will be forwarded to its exposed port. Image dmp1ce/nginx-proxy-letsencrypt has support built right in. Specify LETSENCRYPT_HOST and LETSENCRYPT_EMAIL and voilà- free SSL for your site 🙂


Since I made a switch to Ubuntu Linux on my home pc, I needed a program that would manage my vast collection of music files. Being a .net enthusiast, my choice was naturally Banshee. It’s a well-designed tool and so far was meeting all my needs. But… The other day Tabatha and I were compiling a playlist for our trip to NJ. We both agreed that it would be cool if we could have Banshee play say first 30 seconds of a song, and then go to the next track. That way we could add the song to the playlist if we liked it. I could not find that functionality in Banshee, so I decided to write a custom plugin.

It turned out to be pretty easy. After 40 minutes of messing around I had a functional plugin. It works like a charm. I think I will post my source code online in case other people need this functionality. Oh, and this was also the first time that I used MonoDevelop for a project. But that’s a topic for another blog post.

I decided to abandon my work and wait until the new Banshee comes out. Hopefully then I will have time to polish and release my plugin.