App to Docker – Part 2 – Environment Variables

In the previous part, I’ve started working on getting the server-side code of my web-based database application into containers for easy deployment, maintainability, and update. The particular focus in that episode was how to automatically pre-populate volumes for persistent data with things such as default configuration files. In this part, I’ll have a look at how to use environment variables to configure parameters required for my container to communicate with an accompanying MySQL database container.

Continue reading App to Docker – Part 2 – Environment Variables

App To Docker – Part 1 – Volume Magic

After the six ‘Dockerize Me‘ and four ‘Kubernetes Intro‘ episodes that mainly dealt with getting a good understanding of how to use containers, the time has come for me to deal with the ‘end boss‘ of the game: Dockerizing the web-based database system I’ve been working on in my quality time over the years.

I have played with the thought of open-sourcing the code for some time, but installing Apache, MySQL, SSL certificates, etc., etc., and configuring the system is beyond most people who would be interested in using it. But putting the system in containers for easy deployment, operation and upgrades would change the game. So in this and the following episodes, I give an overview of the steps I have taken to containerize my system. I think the time two write this down is well invested, as the steps I have taken are a good blueprint, and will perhaps also be useful for your future projects.

Continue reading App To Docker – Part 1 – Volume Magic

Dockerize-Me: Traefik as Reverse-Proxy – Part 6

In part 3 of my Dockerize-Me series I’ve been looking at how to run several web services on the same server, make them accessible on the same ports (80 for http and 443 for https) and add Letsencrypt TLS certificates for secure communication. This is typically done with a reverse http proxy setup as described in episode 3 (in Docker containers of course…). In the feedback, several people suggested that I should also look at Traefik as another alternative. So as I like choice, I did just that.

Continue reading Dockerize-Me: Traefik as Reverse-Proxy – Part 6

Dockerize Me – Containers Managing Containers – Part 5

In the previous episode, I’ve moved a WordPress Blog from the simple installation of part 1 to the more sophisticated reverse proxy setup I have put together in part 3 to demonstrate that containers are ‘portable’ between different servers with little effort. Moving the container also showed that the nginx-gen container recognizes when new containers are started and can actually access the environment of that container. It uses this information in turn to create a vhost configuration for the reverse proxy and triggers the creation of a new Letsencrypt certificate. The big question: How does the software that runs in the nginx-gen container get informed that a new container has started and how and why can it access the environment variables of another container? After all, while this is a nice functionality it also raises the question of container security and privacy. Can any container look at the inside of other containers on a server?

Continue reading Dockerize Me – Containers Managing Containers – Part 5

Dockerize Me – Moving Containers To Another Host – Part 4

In part 3 of this series we’ve created a reverse proxy setup with Docker containers in the public cloud to serve the content of several web services from independent docker containers with individual domain names. In this episode I’ll test the concept that containerized applications can easily be moved from one host to another.

Continue reading Dockerize Me – Moving Containers To Another Host – Part 4

Dockerize Me – Several Services and LetsEncrypt – Part 3

After the basic installation of Docker and getting a WordPress blog up and running in Docker containers in part 1, this part of my Docker series will take a look at how to add two important features to the setup:

  • TLS certificates and LetsEncrypt with auto-renewal
  • How to host several websites on one server that are accessible on the same ports (80 for http and 443 for https)
Continue reading Dockerize Me – Several Services and LetsEncrypt – Part 3

Dockerize Me – Cheat Sheet and Pyramid of Trust – Part 2

In part one of my ‘Dockerize Me’ story, I’ve been describing the reasons why I want to learn more about Docker and gave some first tips and tricks how to quickly install it with a few commands on a Debian based server. A first docker-compose project then demonstrated how to quickly spin-up a WordPress container that talks to a database in another container that stores the website’s configuration, the text of the blog articles, comments, etc. Before expanding on this example in part 3, here’s a cheat sheet of Docker and docker-compose commands that I use frequently. Also, I think it’s a good thing at this point to spend some thoughts on the pyramid of trust when getting images from Docker Hub.

Continue reading Dockerize Me – Cheat Sheet and Pyramid of Trust – Part 2

Dockerize Me – My Personal Docker Bootstrap Voyage – Part 1

Over the years I’ve been looking at Docker every now and then. That’s because for one thing I am interested in the concept of deploying software in lightweight containers instead of VMs and also because I am running two pieces of software in Docker containers on my servers as well. But that was it until now because Docker has a steep learning curve and it was pretty pointless for me to really go for it unless I have a use case myself. This year, however, my interest started growing for a number of reasons, so I decided to ride the wave and put together a curriculum that fits my needs. So here’s what motivated me to spend the time and effort and my recommendations for how to go about it.

Continue reading Dockerize Me – My Personal Docker Bootstrap Voyage – Part 1