डेटाबेस डंप माउंट सेट करें
आपको डंप को कंटेनर में माउंट करना होगा ताकि आप इसे एक्सेस कर सकें। docker-compose.yml में कुछ इस तरह:
db:
volumes:
- './db_dump:/db_dump'
db_dump
. नाम की एक स्थानीय निर्देशिका बनाएं और अपना db_dump.gz
रखें वहां फाइल करें।
डेटाबेस कंटेनर प्रारंभ करें
POSTGRES_DB
का उपयोग करें पर्यावरण में (जैसा कि आपने अपने प्रश्न में उल्लेख किया है) स्वचालित रूप से डेटाबेस बनाने के लिए। प्रारंभ db
रेल सर्वर के बिना अपने आप।
docker-compose up -d db
डेटा आयात करें
डेटाबेस उपलब्ध होने के लिए कुछ सेकंड प्रतीक्षा करें। फिर, अपना डेटा आयात करें।
docker-compose exec db gunzip /db_dump/db_dump.gz
docker-compose exec db psql -U postgres -d dbname -f /db_dump/db_dump.gz
docker-compose exec db rm -f /db_dump/db_dump.gz
आप इस आयात को करने के लिए केवल एक स्क्रिप्ट बना सकते हैं, उसे अपनी छवि में चिपका सकते हैं, और फिर उसे कॉल करने के लिए एकल docker-compose कमांड का उपयोग कर सकते हैं। या आप अपनी एंट्रीपॉइंट स्क्रिप्ट जांच सकते हैं कि कोई डंप फ़ाइल मौजूद है या नहीं, और यदि ऐसा है, तो इसे अनज़िप करें और इसे आयात करें... आपको जो कुछ भी करने की आवश्यकता है।
रेल सर्वर प्रारंभ करें
docker-compose up -d web
इसे स्वचालित करना
यदि आप इसे एक नए सेटअप की तैयारी के लिए हाथ से कर रहे हैं, तो आपका काम हो गया। यदि आपको इसे टूलचेन में स्वचालित करने की आवश्यकता है, तो आप इनमें से कुछ चीजें एक स्क्रिप्ट में कर सकते हैं। बस कंटेनरों को अलग से शुरू करें, बीच में डीबी आयात करें, और sleep
का उपयोग करें किसी भी स्टार्टअप देरी को कवर करने के लिए।