Hosting CiviCRM with Docker and Containers: Let's Share!

2020-02-19 09:55
Written by

In the wider world of hosting, "shared" services are the discount offering that you use when you don't value your site or really don't have any budget. But amongst non-profits and open-source projects, sharing is a positive value, and in many cases essential. Can we reclaim the concept?

I've been hosting CiviCRM sites since 2007. About 3 years ago, before I knew anything about containers, I started looking at my services, how I deliver them, and what I wanted to change. It was a much bigger investment than I was expecting, but a year ago I finished converting all my in-house hosting services over to using containers. I've been trying to write out the interesting parts of that story, and here are a few of them:

One of the surprises when digging into this technology has been how adaptable it is - it's a fairly low level system administration tool that can be used in a lot of different ways. Docker, the company, has been most successful in helping developers with their toolset, and at the other end of the spectrum, very large hosting companies (pretty much all of them) now use and offer containers in production.

So, just like with CiviCRM, it's really up to us to decide how we want to use it. Why is this important? Well, if you've ever heard Josh's stump speech, you'll know that it's important to "own" your technology. The hosting piece doesn't have to be part of your ownership of CiviCRM, but many of the same arguments apply.

For example - from a privacy perspective, whoever is hosting your site has the power and sometimes the legal responsibility to share your data with law enforcement of their host country. We know that they have done this and that they are also barred from telling you when they do. From a practical point of view - a host will often determine specific parameters of their hosting that can't be changed (php versions, available libraries, etc.). Even if it's working now, there's no certainty that it will in a few years. For me as a developer, having more control and responsibility for the site host allows me to be much more efficient - I waste less time on sorting out bugs that arise due to unexpected upstream changes, or difficult-to-diagnose performance issues.

So the question comes down to: is it worth it? To some extent, that's a matter of opinion, but like many opinions out there, it tends to get oversimplified into banal justifications (e.g. the argument of economies of scale, or the inevitable triumph of the biggest).

My conclusion is, yes. And I also think that the only way to make it sustainable is to use the same approach that we have with our CiviCRM code base, i.e. with a thriving, community that sees the value in sharing.

And finally, as promised, here's some code:

More on that on my next post.






Filed under


> In the wider world of hosting, "shared" services are the discount offering that you use when you don't value your site or really don't have any budget.

I beg to differ. CiviHosting has been providing shared hosting services for CiviCRM sites since 2007 and our clients value their sites and they have a budget, and we value their sites, their business, the performance of our servers and their data privacy. We also respect their budgets and provide high-quality services for a fair price and CiviHosting has maintained a very well-respected name in this community since we opened our doors for hosting. Our server security has never been compromised since the day we started hosting sites.

Docker and similar technologies are fantastic, and they have their place, but they are not appropriate for every site nor are they a magic solution to basic issues like stability, performance and security. CiviHosting also has other hosting styles, but shared hosting is our most popular technology.

It's important to be realistic, to understand the needs of each client and also to respect different approaches to hosting.

I agree that Docker is not a magic solution to problems of stability, performance and security. I think you have misunderstood the whole point of the article.

My point about shared hosting was not a reference to the solutions provided by CiviCRM hosts (or anyone else specifically), but about the "wider world" of hosting, and how that label is used from a marketing and product point of view, i.e. it's considered a lowball option that most providers don't make much money on and use to upsell clients to more expensive options. Like the $3.99/month type options.

It is a whole different question about whether any particular architecture that calls itself "shared" is good and worthwhile.

The point of my article is that we (the CiviCRM community) can reclaim the label and see how sharing can be more than just a necessary compromise for low budget service offerings, but a benefit for even high budget offerings - just as it is for CiviCRM code (do large organizations stop using CiviCRM and write their own new CRM? No!).

Is that realistic? I think so.