A study of how Docker Compose is used to compose multi-component systems

Md Hasan Ibrahim,Mohammed Sayagh,Ahmed E. Hassan
DOI: https://doi.org/10.1007/s10664-021-10025-1
IF: 3.762
2021-09-23
Empirical Software Engineering
Abstract:Many modern software applications are composed of several components (e.g., a web application is composed of a web server component and a database component). Each of these components can be instantiated as a container from a Docker image. Each Docker image corresponds to a software package (e.g, Apache or MySQL) along with various configuration details. Such containerization simplifies, speeds up, and enables the systematic deployment and maintenance of components at scale. As a natural progression of Docker, applications are now using "Docker Compose" to compose multi-component (aka. multi-container) applications by specifying the various components and their relations – in turn simplifying the deployment and maintenance of complex multi-component applications. This paper reports on a study of 4,103 open-source Github projects that use Docker Compose. Our primary goal is to better understand how it is used in the wild. We observe that over a quarter (26.8%) of the studied projects use Docker Compose for single-component applications. The Docker Compose file for an application is infrequently updated with 30% of such files never changed. We also observe that most of the composed applications leverage basic Docker Compose options instead of using advanced options (e.g., just 4.3% of the multi-component applications use a security related option). While Docker Compose has evolved over the years (it is currently at version 3), applications rarely adopt the new versions and 2.4% of the studied projects downgraded to an earlier version due to platform and option compatibility issues. Our study highlights that while applications are using Docker Compose, they appear to be content with its basic options and earlier versions in many instances. Future studies are needed to better understand how to improve the uptake of the more advanced aspects of Docker Compose, if they are needed at all.
computer science, software engineering
What problem does this paper attempt to address?