Docker is mostly used for deployment purposes or for creating isolated environments. However, there are many other ways it can be utilized. One way I want to promote is how Docker can separate several features of an application into different isolated and reusable images.
The Problem of Redundant Logic
Let me explain the concept using an example. Most applications we develop require authentication and authorization functionality. Each time we build an application, we not only create authentication APIs but also write the same logic repeatedly and in various tech stack as required by the project. When we write code, we ensure that it has no redundancy, but when viewed as a whole, we are still repeating the same logic across different applications.
This led me to think: what if there was an isolated application that I could use whenever I wanted to add authentication functionality to any of my applications? This approach would not only eliminate the effort of writing the same logic again but also allow me to focus more on the core functionality of the application. Most importantly, it would eliminate the responsibility of ensuring that this part of the application is well tested and running as expected.
How Docker Can Help
This is where Docker comes into play. Using the example of authentication functionality, we can develop an application that provides APIs for registering a new user, validating an existing user, handling JWT (JSON Web Tokens) or other authorization methods, etc. We can then dockerize the application and push the image to Docker Hub.
Once the image is built, the task of authentication and authorization is eliminated for any future developers. They can simply pull this image from Docker Hub, start the container, and use the APIs for authenticating users.
The additional benefit is that this application can be built in any tech stack and used across various tech stacks. Since the application is isolated, it can be made robust and well-tested. In other words, this application can be enhanced independently without affecting other parts of the project.
Final Words
There are many functionalities that can be isolated and reused in this manner. I have already worked on a sample project to demonstrate this concept, and you can check it out if you’re interested.
Lastly, I would love to hear your thoughts on this functionality offered by Docker. Additionally, what other ways, do you think, can Docker be used beyond deployment?
Citation
I would like to acknowledge that I took help from ChatGPT to structure my blog and simplify content.
Top comments (0)