When Docker brought new life to Linux containers at the beginning of 2013, the technology quickly gained popularity among software developers. Today Docker has millions of container downloads, thousands of community contributors, and countless third party projects who are using it. What explains this extraordinary popularity?
There are many articles out there trying to answer that question, describing the Docker features and benefits, mostly for developers. But when it comes to ordinary users and even system administrators, we still have some questions. In this article, I try to sum up the main advantages of using Docker for people, like me, who are looking for ways to use Docker with a project management tool. I specialize in productivity software and receive a lot of questions about software installation, which can be simplified with Docker.
I'll focus on...
- OnlyOffice, an all-in-one solution for businesses that offers a set of tools for project management, including Gantt Charts, as well as integration with CRM, email, document management tools with online editors, calendars, etc. It has a public automated Docker repository with more than 10,000 pulls.
- OpenProject, a project management tool with a wide range of features and plugins. There are 19 different Docker repositories for OpenProject, the most popular one with more than 10,000 pulls.
- Redmine, a popular project management and issue tracking web application. There are over 180 different Redmine repositories in Docker Hub. The most popular ones are the official repository, with over 100,000 pulls, and the repository owned by sameersbn, which has a similar number.
#1. Save time
Project management tools are intended to carry a project through all its stages, and help users quickly and efficiently achieve their goals. Thus, the installation should be quick and easy. But sometimes, going through all of the installation steps might take a few hours even if we use the packages instead of compiling the source code. The main reason for this is that these tools require some additional components to be installed on the machine, and managing different versions can be tedious.
To work correctly, OnlyOffice requires Mono 3.2 or later, MySQL 5.6 or later, and nginx. OpenProject's list of dependencies is: Ruby 2.1, Apache or nginx, Phusion Passenger or Unicorn as an application server, MySQL 5.6, or later or PostgreSQL 9.1 or later as a database. To deploy and run Redmine, we need to install at least Ruby for a given Redmine version, one of the supported database back-ends (MySQL, PostgreSQL, Microsoft SQL Server, SQLite 3) to store data, and Bundler to manage gems dependencies.
These dependencies also have a lot of dependencies themselves.
When we use the Docker image, the only dependency to be installed is Docker itself. Then, all we need is to execute one single command to deploy the selected project management tool with all the necessary dependencies.
#2. Avoid dependency errors
As additional components are required, more issues might occur when installing and configuring them. Docker reduces the number of dependencies and thus the number of errors that might occur especially for ordinary users.
#3. Save resources
To ensure the proper project management tool works, our machine must meet all the system requirements specified by developers. But the reality is that the settings and environment of our machine could differ from those of the machine used by developers for writing and testing the code. Of course, we can use an "empty" machine (or two machines in the case of OnlyOffice, if we plan to use the online document editors as well) and try to reproduce the environment. Regardless of the time spent, we would not be able to install anything else on this machine. Or, you may find that you need to hire a system administrator or a developer to reproduce the necessary environment.
Docker allows us to minimize these costs by providing a way to run an application securely isolated in a container allowing us to run many containers simultaneously on one machine.
#4. Update faster and easier
Data security is one of the main reasons why people prefer open source and server solutions to cloud-based solutions. And, the updating process itself takes even more time than the software installation.
With Docker, the updating process becomes much easier. We can store data on the host machine (mount the data volumes by specifying the -v option in the Docker run command) and back it up with any software available for such purposes. Then, all we need is to remove the current container, remove the current image, and run the new image with the same map paths. In sum, three commands to update the whole project management system.
#5. Keep the machine in order
Docker allows us to test the toolset on our local machine and evaluate its capacities without blocking up the system. We won't need to search for the dependencies and uninstall them one by one, you can uninstall an inappropriate tool with one single command.
Why do you use Docker?