Answer the question
In order to leave comments, you need to log in
Is docker suitable for a complex application?
Hello toaster!
There is a complex application consisting of 5 services in Java + Node.js + Nginx + Mongo.
There is a problem of deploying this application both in production and locally with developers.
I would like to create some kind of isolated space, like a virtual machine, which can be simply transferred to a new developer and he would deploy everything in a few manipulations. In addition to this, I would also like to set up work with versioning normally.
Question: is it possible to organize such a deployment? Isn't this too hard for docker? If yes, how can this problem be solved?
Thank you!
Answer the question
In order to leave comments, you need to log in
Not really, that's what it's made for.
So what exactly is the problem you need to solve, specifically?
Docker Compose, as mentioned in the comments, solves the problem of running all this in a specific configuration on one machine.
In production, you will have several machines. MongoDB will probably be separate. You can use Docker Swarm or Kubernetes. The taste and color. For Swarm, the config is very similar to the config for Docker Compose, only the environment-specific values will be different. Kubernetes is also configured with YAML or JSON descriptions of various entities. If there is Kubernetes-as-a-service - take it, you won't regret it. Or you can generally get by with SystemD configurations that will run the necessary containers. Then all this can be described in SystemD unit-files and put into the correct folders on Linux.
Versioning is easy.
First, you need to decide on the Docker image repository. You can also deploy your own from the available options (and the native Docker Registry, and Atomic Registry, and Nexus, and GitLab are all Open Source). Or you can use the services of Docker Hub, Google Container Registry, Quay.io or Amazon.
Secondly, after the next commit, you can use the CI engine to build a new image, assign it a tag with the next version number, and record in the labels from which commit it was built.
Further, it is enough to correct the declarative description of your environment - images with tags appear there. And here it is, the new version. And a new file for Docker Compose.
Summary: With Docker, this problem is much easier to solve than anything else. That is, you can just as well pack all this into several full-fledged virtual machines, but the memory tends to run out.
Didn't find what you were looking for?
Ask your questionAsk a Question
731 491 924 answers to any question