{"status":"ok","message-type":"work","message-version":"1.0.0","message":{"indexed":{"date-parts":[[2026,7,31]],"date-time":"2026-07-31T22:40:45Z","timestamp":1785537645366,"version":"3.56.0"},"reference-count":65,"publisher":"Springer Science and Business Media LLC","issue":"3","license":[{"start":{"date-parts":[[2024,5,1]],"date-time":"2024-05-01T00:00:00Z","timestamp":1714521600000},"content-version":"tdm","delay-in-days":0,"URL":"https:\/\/www.springernature.com\/gp\/researchers\/text-and-data-mining"},{"start":{"date-parts":[[2024,5,1]],"date-time":"2024-05-01T00:00:00Z","timestamp":1714521600000},"content-version":"vor","delay-in-days":0,"URL":"https:\/\/www.springernature.com\/gp\/researchers\/text-and-data-mining"}],"content-domain":{"domain":["link.springer.com"],"crossmark-restriction":false},"short-container-title":["Empir Software Eng"],"published-print":{"date-parts":[[2024,5]]},"DOI":"10.1007\/s10664-024-10462-8","type":"journal-article","created":{"date-parts":[[2024,5,3]],"date-time":"2024-05-03T14:37:57Z","timestamp":1714747077000},"update-policy":"https:\/\/doi.org\/10.1007\/springer_crossmark_policy","source":"Crossref","is-referenced-by-count":8,"title":["Patterns of multi-container composition for service orchestration with Docker Compose"],"prefix":"10.1007","volume":"29","author":[{"ORCID":"https:\/\/orcid.org\/0000-0002-8226-4979","authenticated-orcid":false,"given":"Kalvin","family":"Eng","sequence":"first","affiliation":[],"role":[{"vocabulary":"crossref","role":"author"}]},{"given":"Abram","family":"Hindle","sequence":"additional","affiliation":[],"role":[{"vocabulary":"crossref","role":"author"}]},{"given":"Eleni","family":"Stroulia","sequence":"additional","affiliation":[],"role":[{"vocabulary":"crossref","role":"author"}]}],"member":"297","published-online":{"date-parts":[[2024,5,3]]},"reference":[{"key":"10462_CR1","doi-asserted-by":"crossref","unstructured":"Bird C, Rigby PC, Barr ET, Hamilton DJ, German DM, Devanbu P (2009) The promises and perils of mining git. In: 2009 6th IEEE International Working Conference on Mining Software Repositories, pages 1\u201310. IEEE","DOI":"10.1109\/MSR.2009.5069475"},{"key":"10462_CR2","doi-asserted-by":"publisher","first-page":"30","DOI":"10.1016\/j.infsof.2015.10.002","volume":"70","author":"K Blincoe","year":"2016","unstructured":"Blincoe K, Sheoran J, Goggins S, Petakovic E, Damian D (2016) Understanding the popular users: Following, affiliation influence and leadership on github. Inf Softw Technol 70:30\u201339","journal-title":"Inf Softw Technol"},{"key":"10462_CR3","doi-asserted-by":"crossref","unstructured":"Borges H, Hora A, Valente MT (2016) Understanding the factors that impact the popularity of github repositories. In: 2016 IEEE international conference on software maintenance and evolution (ICSME), pages 334\u2013344. IEEE","DOI":"10.1109\/ICSME.2016.31"},{"key":"10462_CR4","doi-asserted-by":"crossref","unstructured":"Brisson S, Noei E, Lyons K (2020) We are family: analyzing communication in github software repositories and their forks. In 2020 IEEE 27th International Conference on Software Analysis, Evolution and Reengineering (SANER), pages 59\u201369. IEEE","DOI":"10.1109\/SANER48275.2020.9054834"},{"key":"10462_CR5","unstructured":"Burns B, Oppenheimer D (2016) Design patterns for container-based distributed systems. In: 8th USENIX Workshop on Hot Topics in Cloud Computing (HotCloud 16)"},{"key":"10462_CR6","unstructured":"Carey S (2021) Complexity is killing software developers, Nov 2021. URL https:\/\/www.infoworld.com\/article\/3639050\/complexity-is-killing-software-developers.html"},{"key":"10462_CR7","doi-asserted-by":"crossref","unstructured":"Cito J, Schermann G, Wittern JE, Leitner P, Zumberi S, Gall HC (2017) An empirical analysis of the docker container ecosystem on github. In: 2017 IEEE\/ACM 14th International Conference on Mining Software Repositories (MSR), pages 323\u2013333. IEEE","DOI":"10.1109\/MSR.2017.67"},{"key":"10462_CR8","doi-asserted-by":"crossref","unstructured":"Di\u00a0Martino B, Esposito A (2016) A rule-based procedure for automatic recognition of design patterns in uml diagrams. Software: Practice and Experience 46(7): 983\u20131007","DOI":"10.1002\/spe.2336"},{"key":"10462_CR9","unstructured":"Docker Inc. (2020) Announcing the compose specification, April 2020. URL https:\/\/web.archive.org\/web\/20200407131941\/https:\/\/www.docker.com\/blog\/announcing-the-compose-specification\/"},{"key":"10462_CR10","unstructured":"Docker Inc. (2022a) Docker compose specification, March 2022a. URL https:\/\/web.archive.org\/web\/20220322124537\/https:\/\/compose-spec.io\/"},{"key":"10462_CR11","unstructured":"Docker Inc. (2022b) Extend your compose file, August 2022b. URL https:\/\/github.com\/docker\/docs\/blob\/15e9e1e\/content\/compose\/multiple-compose-files\/extends.md"},{"key":"10462_CR12","unstructured":"Docker Inc. (2022c) Control startup and shutdown order in compose, October 2022c. URL https:\/\/github.com\/docker\/docs\/blob\/88b4505\/compose\/startup-order.md"},{"key":"10462_CR13","unstructured":"Docker Inc. (2023a) Ways to set environment variables with compose, October 2023a. URL https:\/\/github.com\/docker\/docs\/blob\/6e199de\/content\/compose\/environment-variables\/set-environment-variables.md"},{"key":"10462_CR14","unstructured":"Docker Inc. (2023b) Using profiles with compose, October 2023b. URL https:\/\/github.com\/docker\/docs\/blob\/e86716e\/content\/compose\/profiles.md"},{"key":"10462_CR15","unstructured":"Docker Inc. (2023c) Merge compose files, August 2023c. URL https:\/\/github.com\/docker\/docs\/blob\/15e9e1e\/content\/compose\/multiple-compose-files\/merge.md"},{"key":"10462_CR16","unstructured":"Docker Inc. (2023d) How to use secrets in docker compose, August 2023d. URL https:\/\/github.com\/docker\/docs\/blob\/15e9e1e\/content\/compose\/use-secrets.md"},{"key":"10462_CR17","unstructured":"Docker Inc. (2023e) Fragments, November 2023e. URL https:\/\/github.com\/docker\/docs\/blob\/8d8014a\/_vendor\/github.com\/compose-spec\/compose-spec\/10-fragments.md"},{"key":"10462_CR18","unstructured":"Endres C, Breitenb\u00fccher U, Falkenthal M, Kopp O, Leymann F, Wettinger J (2017) Declarative vs. imperative: two modeling patterns for the automated deployment of applications. In Proceedings of the 9th International Conference on Pervasive Patterns and Applications, pages 22\u201327. Xpert Publishing Services (XPS)"},{"key":"10462_CR19","doi-asserted-by":"crossref","unstructured":"Eng K, Hindle A (2021) Revisiting dockerfiles in open source software over time. arXiv:2103.12298","DOI":"10.1109\/MSR52588.2021.00057"},{"key":"10462_CR20","doi-asserted-by":"crossref","unstructured":"Eng K, Hindle A, Stroulia E (2024) Replication Package of \"Patterns of Multi-Container Composition for Service Orchestration with Docker Compose\", February 2024. URL https:\/\/zenodo.org\/records\/10648448","DOI":"10.1007\/s10664-024-10462-8"},{"key":"10462_CR21","volume-title":"Service-Oriented Architecture: Concepts, Technology, and Design","author":"T Erl","year":"2005","unstructured":"Erl T (2005) Service-Oriented Architecture: Concepts, Technology, and Design. Prentice Hall PTR, Upper Saddle River, NJ"},{"key":"10462_CR22","unstructured":"Falkenthal M, Barzen J, Breitenb\u00fccher U, Fehling C, Leymann F,\u00a0Hadjakos A,\u00a0Hentschel F,\u00a0Schulze H (2016) Leveraging pattern application via pattern refinement. In: Proceedings of the International Conference on Pursuit of Pattern Languages for Societal Change (PURPLSOC), pages 38\u201361"},{"key":"10462_CR23","doi-asserted-by":"publisher","DOI":"10.1007\/978-3-7091-1568-8","volume-title":"Cloud computing patterns: fundamentals to design, build, and manage cloud applications","author":"C Fehling","year":"2014","unstructured":"Fehling C, Leymann F, Retter R, Schupeck W, Arbitter P (2014) Cloud computing patterns: fundamentals to design, build, and manage cloud applications. Springer"},{"key":"10462_CR24","volume-title":"Design Patterns: Elements of Reusable Object-Oriented Software","author":"E Gamma","year":"1994","unstructured":"Gamma E, Helm R, Johnson R, Vlissides J (1994) Design Patterns: Elements of Reusable Object-Oriented Software. Addison Wesley, Boston, MA"},{"key":"10462_CR25","doi-asserted-by":"crossref","unstructured":"Guerriero M, Garriga M, Tamburri DA, Palomba F (2019) Adoption, support, and challenges of infrastructure-as-code: Insights from industry. In: 2019 IEEE International conference on software maintenance and evolution (ICSME), pages 580\u2013589. IEEE","DOI":"10.1109\/ICSME.2019.00092"},{"key":"10462_CR26","unstructured":"Hohpe G (2017) Modern examples for enterprise integration patterns, February 2017. URL https:\/\/web.archive.org\/web\/20230815004255\/https:\/\/www.enterpriseintegrationpatterns.com\/ramblings\/eip1_examples_updated.html"},{"key":"10462_CR27","volume-title":"Enterprise integration patterns: Designing, building, and deploying messaging solutions","author":"G Hohpe","year":"2004","unstructured":"Hohpe G, Woolf B (2004) Enterprise integration patterns: Designing, building, and deploying messaging solutions. Addison-Wesley Professional"},{"issue":"6","key":"10462_CR28","doi-asserted-by":"publisher","first-page":"1","DOI":"10.1007\/s10664-021-10025-1","volume":"26","author":"MdH Ibrahim","year":"2021","unstructured":"Ibrahim MdH, Sayagh M, Hassan AE (2021) A study of how docker compose is used to compose multi-component systems. Empir Softw Eng 26(6):1\u201327","journal-title":"Empir Softw Eng"},{"key":"10462_CR29","doi-asserted-by":"crossref","unstructured":"Kalliamvakou E, Gousios G, Blincoe K, Singer L, German DM, Damian D (2014) The promises and perils of mining github. In: Proceedings of the 11th working conference on mining software repositories, pages 92\u2013101","DOI":"10.1145\/2597073.2597074"},{"key":"10462_CR30","unstructured":"Kane SP, Matthias K (2023) Docker: Up & Running. \"O\u2019Reilly Media, Inc.\", Sebastopol, California"},{"key":"10462_CR31","unstructured":"Kompose Authors (2022) Kompose - convert your docker compose file to kubernetes or openshift, January 2022. URL https:\/\/web.archive.org\/web\/20220119234120\/https:\/\/kompose.io\/"},{"key":"10462_CR32","doi-asserted-by":"crossref","unstructured":"Ksontini E, Kessentini M, do\u00a0N Ferreira T, Hassan F (2021) Refactorings and technical debt in docker projects: An empirical study. In: 2021 36th IEEE\/ACM International Conference on Automated Software Engineering (ASE), pages 781\u2013791. IEEE","DOI":"10.1109\/ASE51524.2021.9678585"},{"key":"10462_CR33","doi-asserted-by":"crossref","unstructured":"Lin C, Nadi S, Khazaei H (2020) A large-scale data set and an empirical study of docker images hosted on docker hub. In: 2020 IEEE International Conference on Software Maintenance and Evolution (ICSME), pages 371\u2013381. IEEE","DOI":"10.1109\/ICSME46990.2020.00043"},{"key":"10462_CR34","unstructured":"McCarty S (2016) Container tidbits: When should i break my application into multiple containers?, March 2016. URL https:\/\/web.archive.org\/web\/20230820154241\/https:\/\/www.redhat.com\/en\/blog\/container-tidbits-when-should-i-break-my-application-multiple-containers"},{"key":"10462_CR35","unstructured":"Microsoft (2022) Containerizing monolithic applications, April 2022. URL https:\/\/github.com\/dotnet\/docs\/blob\/0ceaa6b\/docs\/architecture\/microservices\/architect-microservice-container-applications\/containerize-monolithic-applications.md"},{"key":"10462_CR36","volume-title":"Docker in practice","author":"I Miell","year":"2019","unstructured":"Miell I, Sayers A (2019) Docker in practice. Simon and Schuster, New York, NY"},{"issue":"6","key":"10462_CR37","doi-asserted-by":"publisher","first-page":"3219","DOI":"10.1007\/s10664-017-9512-6","volume":"22","author":"N Munaiah","year":"2017","unstructured":"Munaiah N, Kroh S, Cabrey C, Nagappan M (2017) Curating Github for Engineered Software Projects. Empir Softw Eng 22(6):3219\u20133253","journal-title":"Empir Softw Eng"},{"key":"10462_CR38","unstructured":"Nerdctl Authors (2023) nerdctl: Docker-compatible cli for containerd, July 2023. URL https:\/\/web.archive.org\/web\/20230712211127\/https:\/\/github.com\/containerd\/nerdctl"},{"key":"10462_CR39","unstructured":"Nodiscc et\u00a0al (2022) Awesome-selfhosted, May 2022. URL https:\/\/github.com\/awesome-selfhosted\/awesome-selfhosted\/tree\/1726a40"},{"key":"10462_CR40","unstructured":"Okteto, Inc. (2023) Docker compose reference | okteto documentation, June 2023. URL https:\/\/web.archive.org\/web\/20230605123922\/https:\/\/www.okteto.com\/docs\/reference\/compose\/"},{"key":"10462_CR41","unstructured":"Podman Compose Authors (2023) Podman compose, July 2023. URL https:\/\/web.archive.org\/web\/20230713103640\/https:\/\/github.com\/containers\/podman-compose"},{"key":"10462_CR42","unstructured":"Podviaznikov A (2017) The versatility of docker compose, March 2017. URL https:\/\/web.archive.org\/web\/20220808200330\/https:\/\/runnable.com\/blog\/the-versatility-of-docker-compose"},{"issue":"5","key":"10462_CR43","doi-asserted-by":"publisher","first-page":"3430","DOI":"10.1007\/s10664-020-09841-8","volume":"25","author":"A Rahman","year":"2020","unstructured":"Rahman A, Farhana E, Williams L (2020) The \u2018as code\u2019activities: development anti-patterns for infrastructure as code. Empir Softw Eng 25(5):3430\u20133467","journal-title":"Empir Softw Eng"},{"key":"10462_CR44","doi-asserted-by":"crossref","unstructured":"Rahman A, Farhana E, Parnin C, Williams L (2020a) Gang of eight: A defect taxonomy for infrastructure as code scripts. In: 2020 IEEE\/ACM 42nd International Conference on Software Engineering (ICSE), pages 752\u2013764. IEEE","DOI":"10.1145\/3377811.3380409"},{"key":"10462_CR45","doi-asserted-by":"crossref","unstructured":"Rahman A, Parnin C, Williams L (2019) The seven sins: Security smells in infrastructure as code scripts. In: 2019 IEEE\/ACM 41st International Conference on Software Engineering (ICSE), pages 164\u2013175. IEEE","DOI":"10.1109\/ICSE.2019.00033"},{"key":"10462_CR46","volume-title":"Learning Docker","author":"P Raj","year":"2015","unstructured":"Raj P, Chelladhurai JS, Singh V (2015) Learning Docker. Packt Publishing Ltd, Birmingham, UK"},{"key":"10462_CR47","unstructured":"Rancher Labs (2023) Rancher docs: Rancher compose, August 2023. URL https:\/\/web.archive.org\/web\/20220826040438\/https:\/\/rancher.com\/docs\/rancher\/v1.6\/en\/cattle\/rancher-compose\/"},{"key":"10462_CR48","doi-asserted-by":"crossref","unstructured":"Rodriguez MA, Buyya R (2019) Container-based cluster orchestration systems: A taxonomy and future directions. Software: Practice and Experience 49(5): 698\u2013719","DOI":"10.1002\/spe.2660"},{"key":"10462_CR49","unstructured":"Seidel JV (1998) Qualitative data analysis"},{"key":"10462_CR50","doi-asserted-by":"crossref","unstructured":"Shamim MSI, Bhuiyan FA, Rahman A (2020) Xi commandments of kubernetes security: A systematization of knowledge related to kubernetes security practices. In 2020 IEEE Secure Development (SecDev), pages 58\u201364. IEEE","DOI":"10.1109\/SecDev45635.2020.00025"},{"key":"10462_CR51","unstructured":"Sousa TB, Correia FF, Ferreira HS (2015) Patterns for software orchestration on the cloud. In: Proceedings of the 22nd Conference on Pattern Languages of Programs, pages 1\u201312"},{"key":"10462_CR52","doi-asserted-by":"crossref","unstructured":"Sousa TB, Ferreira HS, Correia FF, Aguiar A (2017) Engineering software for the cloud: Messaging systems and logging. In: Proceedings of the 22Nd European Conference on Pattern Languages of Programs, pages 1\u201314","DOI":"10.1145\/3147704.3147720"},{"key":"10462_CR53","doi-asserted-by":"crossref","unstructured":"Sousa TB, Ferreira HS, Correia FF, Aguiar A (2018b) Engineering software for the cloud: External monitoring and failure injection. In: Proceedings of the 23rd European Conference on Pattern Languages of Programs, pages 1\u20138","DOI":"10.1145\/3282308.3282316"},{"key":"10462_CR54","doi-asserted-by":"crossref","unstructured":"Sousa TB, Ferreira HS, Correia FF, Aguiar A (2018c) Engineering software for the cloud: Automated recovery and scheduler. In: Proceedings of the 23rd European Conference on Pattern Languages of Programs, pages 1\u20138","DOI":"10.1145\/3282308.3282315"},{"key":"10462_CR55","doi-asserted-by":"crossref","unstructured":"Sousa TB, Ferreira HS, Correia FF (2018a) Overview of a pattern language for engineering software for the cloud. In: Proceedings of the 25th Conference on Pattern Languages of Programs, pages 1\u20139","DOI":"10.1145\/3282308.3282315"},{"issue":"6","key":"10462_CR56","doi-asserted-by":"publisher","first-page":"2128","DOI":"10.1109\/TSE.2021.3052177","volume":"48","author":"TB Sousa","year":"2021","unstructured":"Sousa TB, Ferreira HS, Correia FF (2021) A survey on the adoption of patterns for engineering software for the cloud. IEEE Transactions on Software Engineering 48(6):2128\u20132140","journal-title":"IEEE Transactions on Software Engineering"},{"key":"10462_CR57","doi-asserted-by":"crossref","unstructured":"Spadini D, Aniche M, Bacchelli A (2018) Pydriller: Python framework for mining software repositories. In: Proceedings of the 2018 26th ACM Joint Meeting on European Software Engineering Conference and Symposium on the Foundations of Software Engineering, pages 908\u2013911","DOI":"10.1145\/3236024.3264598"},{"key":"10462_CR58","unstructured":"The Kubernetes Authors (2022) Kubernetes, June 2022. URL https:\/\/web.archive.org\/web\/20220601000133\/https:\/\/kubernetes.io\/"},{"key":"10462_CR59","unstructured":"Traefik (2022) Traefik docker documentation, December 2022. URL https:\/\/github.com\/traefik\/traefik\/blob\/519ed8b\/docs\/content\/providers\/docker.md#docker-api-access"},{"issue":"5","key":"10462_CR60","doi-asserted-by":"publisher","first-page":"931","DOI":"10.3390\/app9050931","volume":"9","author":"E Truyen","year":"2019","unstructured":"Truyen E, Van Landuyt D, Preuveneers D, Lagaisse B, Joosen W (2019) A comprehensive feature comparison study of open-source container orchestration frameworks. Appl Sci 9(5):931","journal-title":"Appl Sci"},{"key":"10462_CR61","unstructured":"Van\u00a0Stijn S et\u00a0al (2023) Code of JSON Schema Compose Specification Found in Docker Compose Source Code, November 2023. URL https:\/\/web.archive.org\/web\/20231207060306\/https:\/\/raw.githubusercontent.com\/compose-spec\/compose-spec\/ec342b4\/schema\/compose-spec.json"},{"key":"10462_CR62","unstructured":"Webb J (2022) The container orchestrator landscape, August 2022. URL https:\/\/lwn.net\/Articles\/905164\/"},{"key":"10462_CR63","doi-asserted-by":"crossref","unstructured":"Xu T, Marinov D (2018) Mining container image repositories for software configuration and beyond. In: Proceedings of the 40th International Conference on Software Engineering: New Ideas and Emerging Results, pages 49\u201352","DOI":"10.1145\/3183399.3183403"},{"issue":"1","key":"10462_CR64","doi-asserted-by":"publisher","first-page":"1","DOI":"10.1007\/s11432-017-9415-3","volume":"62","author":"Y Zhang","year":"2019","unstructured":"Zhang Y, Wang H, Filkov V (2019) A clustering-based approach for mining dockerfile evolutionary trajectories. Sci China Inf Sci 62(1):1\u20133","journal-title":"Sci China Inf Sci"},{"key":"10462_CR65","doi-asserted-by":"crossref","unstructured":"Zhang Y, Yin G, Wang T, Yu Y, Wang H (2018) An insight into the impact of dockerfile evolutionary trajectories on quality and latency. In: 2018 IEEE 42nd Annual Computer Software and Applications Conference (COMPSAC), volume\u00a01, pages 138\u2013143. IEEE","DOI":"10.1109\/COMPSAC.2018.00026"}],"container-title":["Empirical Software Engineering"],"original-title":[],"language":"en","link":[{"URL":"https:\/\/link.springer.com\/content\/pdf\/10.1007\/s10664-024-10462-8.pdf","content-type":"application\/pdf","content-version":"vor","intended-application":"text-mining"},{"URL":"https:\/\/link.springer.com\/article\/10.1007\/s10664-024-10462-8\/fulltext.html","content-type":"text\/html","content-version":"vor","intended-application":"text-mining"},{"URL":"https:\/\/link.springer.com\/content\/pdf\/10.1007\/s10664-024-10462-8.pdf","content-type":"application\/pdf","content-version":"vor","intended-application":"similarity-checking"}],"deposited":{"date-parts":[[2024,11,18]],"date-time":"2024-11-18T00:34:16Z","timestamp":1731890056000},"score":1,"resource":{"primary":{"URL":"https:\/\/link.springer.com\/10.1007\/s10664-024-10462-8"}},"subtitle":[],"short-title":[],"issued":{"date-parts":[[2024,5]]},"references-count":65,"journal-issue":{"issue":"3","published-print":{"date-parts":[[2024,5]]}},"alternative-id":["10462"],"URL":"https:\/\/doi.org\/10.1007\/s10664-024-10462-8","relation":{},"ISSN":["1382-3256","1573-7616"],"issn-type":[{"value":"1382-3256","type":"print"},{"value":"1573-7616","type":"electronic"}],"subject":[],"published":{"date-parts":[[2024,5]]},"assertion":[{"value":"19 February 2024","order":1,"name":"accepted","label":"Accepted","group":{"name":"ArticleHistory","label":"Article History"}},{"value":"3 May 2024","order":2,"name":"first_online","label":"First Online","group":{"name":"ArticleHistory","label":"Article History"}}],"article-number":"65"}}