Compose vs Docker Compose: What are the differences?
What is Compose? We host databases for busy devs: production-ready, cloud-hosted, open source. Compose makes it easy to spin up multiple open source databases with just one click. Deploy MongoDB for production, take Redis out for a performance test drive, or spin up RethinkDB in development before rolling it out to production.
What is Docker Compose? Define and run multi-container applications with Docker. With Compose, you define a multi-container application in a single file, then spin your application up in a single command which does everything that needs to be done to get it running.
Compose and Docker Compose are primarily classified as "MongoDB Hosting" and "Container" tools respectively.
"Simple to set up" is the top reason why over 41 developers like Compose, while over 111 developers mention "Multi-container descriptor" as the leading cause for choosing Docker Compose.
Docker Compose is an open source tool with 16.6K GitHub stars and 2.56K GitHub forks. Here's a link to Docker Compose's open source repository on GitHub.
StackShare, Typeform, and CircleCI are some of the popular companies that use Docker Compose, whereas Compose is used by Accenture, Artsy, and FashionUnited. Docker Compose has a broader approval, being mentioned in 797 company stacks & 627 developers stacks; compared to Compose, which is listed in 82 company stacks and 19 developer stacks.
What is Compose?
What is Docker Compose?
Need advice about which tool to choose?Ask the StackShare community!
Sign up to add, upvote and see more prosMake informed product decisions
What are the cons of using Compose?
Sign up to get full access to all the companiesMake informed product decisions
Sign up to get full access to all the tool integrationsMake informed product decisions
We went with MongoDB , almost by mistake. I had never used it before, but I knew I wanted the *EAN part of the MEAN stack, so why not go all in. I come from a background of SQL (first MySQL , then PostgreSQL ), so I definitely abused Mongo at first... by trying to turn it into something more relational than it should be. But hey, data is supposed to be relational, so there wasn't really any way to get around that.
There's a lot I love about MongoDB, and a lot I hate. I still don't know if we made the right decision. We've been able to build much quicker, but we also have had some growing pains. We host our databases on MongoDB Atlas , and I can't say enough good things about it. We had tried MongoLab and Compose before it, and with MongoDB Atlas I finally feel like things are in a good place. I don't know if I'd use it for a one-off small project, but for a large product Atlas has given us a ton more control, stability and trust.
Heroku was a decent choice to start a business, but at some point our platform was too big, too complex & too heterogenic, so Heroku started to be a constraint, not a benefit. First, we've started containerizing our apps with Docker to eliminate "works in my machine" syndrome & uniformize the environment setup. The first orchestration was composed with Docker Compose , but at some point it made sense to move it to Kubernetes. Fortunately, we've made a very good technical decision when starting our work with containers - all the container configuration & provisions HAD (since the beginning) to be done in code (Infrastructure as Code) - we've used Terraform & Ansible for that (correspondingly). This general trend of containerisation was accompanied by another, parallel & equally big project: migrating environments from Heroku to AWS: using Amazon EC2 , Amazon EKS, Amazon S3 & Amazon RDS.
Recently I have been working on an open source stack to help people consolidate their personal health data in a single database so that AI and analytics apps can be run against it to find personalized treatments. We chose to go with a #containerized approach leveraging Docker #containers with a local development environment setup with Docker Compose and nginx for container routing. For the production environment we chose to pull code from GitHub and build/push images using Jenkins and using Kubernetes to deploy to Amazon EC2.
We also implemented a dashboard app to handle user authentication/authorization, as well as a custom SSO server that runs on Heroku which allows experts to easily visit more than one instance without having to login repeatedly. The #Backend was implemented using my favorite #Stack which consists of FeathersJS on top of Node.js and ExpressJS with PostgreSQL as the main database. The #Frontend was implemented using React, Redux.js, Semantic UI React and the FeathersJS client. Though testing was light on this project, we chose to use AVA as well as ESLint to keep the codebase clean and consistent.
Since our production deployment makes use of the Convox platform, we use this to describe the containers to be deployed via Convox to AWS ECS.
We also use this for our local dev environment (previously used vagrant with chef).
Aside from our Minecraft-infrastructure, we compose it with ... Docker Compose! (kinda obious, eh .. ?) This includes for example the web-services, aswell as the monitoring and mail-infrastructure.
Docker Compose is just another part of my "infrastructure as code" initiative and allows me to build isolated pieces of systems with their own volumes and networks.
Our application will consist of several containers each communicating with each other. Using docker-compose, we can orchestrate several containers at once.
The core tech in ACS (Azure Container Services) we spin up a Kubernetes cluster and deploy our app into staging and production environments here.