𝗧𝗵𝗲 𝗠𝘂𝗹𝘁𝗶-𝗦𝗰𝗲𝗻𝗮𝗿𝗶𝗼 𝗗𝗼𝗰𝗸𝗲𝗿 𝗣𝗮𝘁𝘁𝗲𝗿𝗻 तुमचे एन्व्हायर्नमेंट (environment) सुसंगत ठेवण्यासाठी तुम्ही Docker वापरता. पण ते नेहमीच काम करते का? समस्या Docker मध्ये नाहीये. ती तुमच्या प्रोजेक्टच्या संरचनेत (project structure) आहे. जेव्हा तुमच्याकडे अनेक Dockerfiles असतात, तेव्हा वेगवेगळे निकाल मिळणे सोपे असते. यामुळे एकाच रिपॉझिटरीमध्ये अनेक सारखी वाटणारी एन्व्हायर्नमेंट्स तयार होऊ शकतात, जी कालांतराने एकमेकांपासून वेगळी (drift apart) होऊ शकतात.
मल्टि-सिनेरिओ डॉकर पॅटर्न ही समस्या सोडवतो. हे एका साध्या कल्पनेवर आधारित आहे: एक रनटाइम (runtime) आणि अनेक डिप्लॉयमेंट सिनेरिओ (deployment scenarios). तुम्ही तुमचा Dockerfile आणि बेस एन्व्हायर्नमेंट (base environment) सारखेच ठेवता. फरक फक्त सिनेरिओ स्तरावरच (scenario level) करण्याची परवानगी असते.
सिनेरिओ म्हणजे एन्व्हायर्नमेंट सुरू करण्यासाठी एक स्वयंपूर्ण युनिट (self-contained unit) आहे. यात समाविष्ट आहे:
- docker-compose.yml
- .env
- Makefile
- devcontainer.json
- अतिरिक्त स्क्रिप्ट्स (additional scripts)
सर्व सिनेरिओ एकच रनटाइम आणि रिसोर्सेस (resources) वापरतात. ते फक्त सिस्टम कशी सुरू केली जाते यामध्ये बदल करतात. अशा प्रकारे, तुम्ही dev आणि prod मधील लपलेले फरक टाळू शकता.
हा पॅटर्न खालील गोष्टी प्रदान करतो:
- सर्व सिनेरिओसाठी एकच रनटाइम
- लाँच सिनेरिओचे स्पष्ट विलगीकरण (explicit separation)
- प्रोडक्शनपासून डेव्हलपमेंट टूल्सचे विलगीकरण (isolation)
- केंद्रीकृत कॉन्फिगरेशन (centralized configuration)
तुम्ही हा पॅटर्न Docker किंवा Podman सोबत वापरू शकता. हे कोणत्याही विशिष्ट कंटेनर इंजिनशी (container engine) बांधलेले नाही.
Docker चे वर्तन सुसंगत ठेवण्यासाठी तुमचा आवडता पॅटर्न कोणता आहे? तुमचा अनुभव कमेंट्समध्ये शेअर करा. Source: https://dev.to/outcomer/the-multi-scenario-docker-pattern-how-to-build-a-reproducible-docker-environment-for-any-conditions-aho Optional learning community: https://github.com/outcomer/multi-scenario-docker-pattern