𝗧𝗵𝗲 𝗠𝘂𝗹𝘁𝗶-𝗦𝗰𝗲𝗻𝗮𝗿𝗶𝗼 𝗗𝗼𝗰𝗸𝗲𝗿 𝗣𝗮𝘁𝘁𝗲𝗿𝗻
ನಿಮ್ಮ ಎನ್ವಿರಾನ್ಮೆಂಟ್ (environment) ಅನ್ನು ಸ್ಥಿರವಾಗಿಡಲು ನೀವು Docker ಅನ್ನು ಬಳಸುತ್ತೀರಿ. ಆದರೆ ಇದು ಯಾವಾಗಲೂ ಕೆಲಸ ಮಾಡಲಿದೆಯೇ? ಸಮಸ್ಯೆ Docker ಅಲ್ಲ. ಅದು ನಿಮ್ಮ ಪ್ರಾಜೆಕ್ಟ್ ರಚನೆ (project structure). ನೀವು ಅನೇಕ Dockerfiles ಹೊಂದಿದ್ದಾಗ, ವಿಭಿನ್ನ ಫಲಿತಾಂಶಗಳು ಬರುವುದು ಸುಲಭ. ಇದು ಒಂದೇ ರೆಪೊಸಿಟರಿಯಲ್ಲಿ (repository) ಒಂದಕ್ಕೊಂದು ಭಿನ್ನವಾಗುವ ಅನೇಕ ಸಾಮ್ಯತೆಯ ಎನ್ವಿರಾನ್ಮೆಂಟ್ಗಳನ್ನು ಸೃಷ್ಟಿಸಬಹುದು.
Multi-Scenario Docker Pattern ಈ ಸಮಸ್ಯೆಯನ್ನು ಪರಿಹರಿಸುತ್ತದೆ. ಇದು ಒಂದು ಸರಳ ಪರಿಕಲ್ಪನೆಯ ಮೇಲೆ ಆಧಾರಿತವಾಗಿದೆ: ಒಂದು runtime ಮತ್ತು ಬಹು deployment ಸನ್ನಾರಿಯೋಗಳು (scenarios). ನೀವು ನಿಮ್ಮ Dockerfile ಮತ್ತು ಮೂಲ ಎನ್ವಿರಾನ್ಮೆಂಟ್ ಅನ್ನು ಒಂದೇ ರೀತಿ ಇರಿಸಿಕೊಳ್ಳುತ್ತೀರಿ. ವ್ಯತ್ಯಾಸಗಳನ್ನು ಕೇವಲ ಸನ್ನಾರಿಯೋ ಮಟ್ಟದಲ್ಲಿ ಮಾತ್ರ ಅನುಮತಿಸಲಾಗುತ್ತದೆ.
ಸನ್ನಾರಿಯೋ ಎನ್ನುವುದು ಎನ್ವಿರಾನ್ಮೆಂಟ್ ಅನ್ನು ಪ್ರಾರಂಭಿಸಲು ಬಳಸುವ ಒಂದು ಸ್ವತಂತ್ರ ಘಟಕವಾಗಿದೆ (self-contained unit). ಅದರಲ್ಲಿ ಇರುತ್ತವೆ:
- docker-compose.yml
- .env
- Makefile
- devcontainer.json
- ಹೆಚ್ಚುವರಿ ಸ್ಕ್ರಿಪ್ಟ್ಗಳು (additional scripts)
ಎಲ್ಲಾ ಸನ್ನಾರಿಯೋಗಳು ಒಂದೇ runtime ಮತ್ತು ಸಂಪನ್ಮೂಲಗಳನ್ನು (resources) ಹಂಚಿಕೊಳ್ಳುತ್ತವೆ. ಅವು ಕೇವಲ ಸಿಸ್ಟಮ್ ಅನ್ನು ಹೇಗೆ ಪ್ರಾರಂಭಿಸಬೇಕು ಎಂಬುದನ್ನು ಮಾತ್ರ ಬದಲಾಯಿಸುತ್ತವೆ. ಈ ಮೂಲಕ, ನೀವು dev ಮತ್ತು prod ನಡುವಿನ ಅಡಗಿರುವ ವ್ಯತ್ಯಾಸಗಳನ್ನು ತಪ್ಪಿಸಬಹುದು.
ಈ ಪ್ಯಾಟರ್ನ್ ಈ ಕೆಳಗಿನವುಗಳನ್ನು ಒದಗಿಸುತ್ತದೆ:
- ಎಲ್ಲಾ ಸನ್ನಾರಿಯೋಗಳಿಗಾಗಿ ಒಂದೇ runtime
- ಲಾಂಚ್ ಸನ್ನಾರಿಯೋಗಳ ಸ್ಪಷ್ಟ ಪ್ರತ್ಯೇಕತೆ
- ಪ್ರೊಡಕ್ಷನ್ನಿಂದ dev ಪರಿಕರಗಳ ಪ್ರತ್ಯೇಕತೆ
- ಕೇಂದ್ರೀಕೃತ ಕಾನ್ಫಿಗರೇಶನ್ (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