Mattermost with Docker : discussion about requirements

We recently open a discussion on the mattermost-docker repository, about the Docker requirements for Mattermost.

As you know, Mattermost have some requirements about server OS and software, and also about client Web browser. But the Mattermost Docker project have no requirements about the Docker and (especially) docker-compose version we support.

The most important point to define our requirements here, is docker-compose version 3. It allow to use the “future” of docker-compose, Docker stacks. But it required Docker engine version 1.13.0+, which is a “recent” version (2017-01). Also, some people might use the Ubuntu packaged Docker binary instead of the official (called docker.io). I don’t know how many people it affect, but this package is, AFAIK, on 1.12.x. So using docker-compose 3.0+ could break things for those people.

From here, we have 3 solutions :

  • we support docker-compose 3.0+ and we consider people should have an almost up-to-date Docker version
  • we do not support docker-compose 3.0+ so we could announce “only” Docker 1.12+ as requirement
  • we announce Docker 1.12+ as requirements but we propose both 2.0 and 3.0 docker-compose files

According to me, maintaining 2 docker-compose files is dirty since, for now, the only difference is a unique line, specifying the version number to use. But I also understand that some people may use sensitive systems and prefer to wait few months before updating Docker, and 1.13.0 is “only” 7 months old.

We would appreciate some other opinions from community to see if it is a mistake to drop support for Docker 1.12.x and fewer :slight_smile:

Having supported Docker on a couple of OSes, I’ve just gone ahead and set up the docker-ce repos, as the distro supplied packages can vary widely. (As the noted older version with Ubuntu.) For me, knowing that all my installations are running the same stable release is just good practice.

So, my vote would be for 3.0+ support, and require the newer versions docker. Would be easier to swarm with the newer docker-compose releases.

Same thing here. Vote for 3.0 suppport

Does anyone have an idea to have some stats on how many people use docker.io (Ubuntu maintained) or docker-ce (Docker maintained) packages ?

There are not a lot of answers about this subject, but if I have to sum opinions here and on the Github issue we got 3 people for Docker 1.13.0+ and 1 personn for Docker 1.12.0+ (so docker-compose 2.0 and not 3.0).

I don’t know @jasonblais if you have an idea of the when/who/how of the decision ?

@pichouk Maybe as one more step we can check what requirements other software typically have.

For instance GitLab, Ubuntu, etc. that Mattermost users are likely to have running alongside Mattermost.

AFAIK Gitlab have not Docker requirements. Actually, it’s quite unusual to ask for a Docker requirements since most of the softwares will work on all Docker versions, ans Mattermost too.

In our case, it’s just that the “Mattermost for Docker” repository provides some files and commands examples to deploy Mattermost with Docker. And those examples works for specific version of Docker and that is this version (the one on example) I want to define.

Maybe I misexplained what I meant by “requirements”. It’s not a requirement for Mattermost, it will still work on all (not too old) Docker version. But people who just copy-paste our examples should have the Docker version we will use on our example.

Hope it is clear enough ^^

Got it :slight_smile: Thanks @pichouk, that’'s helpful to know

Can you give a link to the example you’re referring to? Is it this one? https://docs.mattermost.com/install/prod-docker.html#production-docker-setup-on-ubuntu

It’s more about the docker-compose.yml file on the Github repository.

Docker compose is a tool to help management of some Docker containers based on a configuration file (the docker-compose.yml file). We provide an example file to allow people to just “clone and copy-paste” to run Mattermost. But you can run Mattermost without this Docker compose file or using customized one (this is what I do for my server).

This file use Docker Compose file format version 2. To support new features (like Docker stacks, which is a requested feature) we have to use the Docker Compose version 3 format.
For now, it is just about changing a single number on the file (format is quite the same), this is a very very small change, and it is really easy for people to just change back to version 2 if they want. But I thought it will be better to talk about this and to mention it on the README because some people may only copy-paste the “Quickstart” commands and may have an error if they don’t have latest Docker Compose (and Docker) version.

Yeah I think that sounds reasonable, especially since majority of the feedback has been advocating version 3 support.

I’m okay changing https://github.com/mattermost/mattermost-docker/blob/master/docker-compose.yml to use version 3, and having a note in the README about how to use version 2 instead

I just updated the Pull Request to mention that we switch to Docker Compose v3.
If ok for you, I’ll merge it.