Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

स्प्रिंग बूट + डॉकर-लिखें + MySQL:कनेक्शन से इनकार कर दिया

डॉकर कंपोज़ हमेशा कंटेनर को डिपेंडेंसी ऑर्डर में शुरू और बंद करता है, या नहीं दिए जाने पर फ़ाइल में अनुक्रमिक क्रम। लेकिन docker-compose यह गारंटी नहीं देता है कि यह डिपेंडेंसी कंटेनर के चलने तक इंतजार करेगा। आप संदर्भित कर सकते हैं अधिक जानकारी के लिए यहाँ। तो यहाँ समस्या यह है कि आपका डेटाबेस तैयार नहीं है जब आपका spring-mysql कंटेनर डेटाबेस तक पहुंचने का प्रयास करता है। तो, अनुशंसित समाधान यह है कि आप का उपयोग कर सकते हैं। वेट-फॉर-इट.श या आपके spring-mysql . को लपेटने के लिए समान स्क्रिप्ट ऐप शुरू हो रहा है ENTRYPOINT

उदाहरण के लिए यदि आप wait-for-it.sh . का उपयोग करते हैं आपका ENTRYPOINT उपरोक्त स्क्रिप्ट को अपने प्रोजेक्ट रूट पर कॉपी करने के बाद आपके डॉकरफाइल में निम्नलिखित में बदलना चाहिए:

ENTRYPOINT ["./wait-for-it.sh", "db:3306", "--", "java", "-jar", "app.jar"]

और दो अन्य महत्वपूर्ण बातों पर यहाँ विचार करना है:

  • उन लिंक का उपयोग न करें जो वे हैं बहिष्कृत आपको इसके बजाय उपयोगकर्ता-परिभाषित नेटवर्क का उपयोग करना चाहिए। यदि आप किसी भी नेटवर्क को स्पष्ट रूप से परिभाषित नहीं करते हैं, तो docker-compose फ़ाइल में सभी सेवाएँ एकल उपयोगकर्ता-परिभाषित नेटवर्क में होंगी। तो आपको बस कंपोज़ फ़ाइल से लिंक्स को हटाना होगा।
  • यदि आप केवल उपयोगकर्ता-परिभाषित नेटवर्क के अंदर ही इसका उपयोग करते हैं, तो आपको डॉकटर कंटेनर के लिए पोर्ट को प्रकाशित करने की आवश्यकता नहीं है।


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL केवल चालू माह के भीतर?

  2. पासवर्ड रीसेट करने के बाद उपयोगकर्ता 'रूट' @ 'लोकलहोस्ट' (पासवर्ड का उपयोग करके:हाँ) के लिए प्रवेश निषेध LINUX

  3. बैश में लंबे इंट को डॉटेड क्वाड आईपी में कुशलता से कैसे बदलें

  4. में गैर - वस्तु की संपत्ति प्राप्त करने की कोशिश

  5. सत्यनिष्ठा बाधा उल्लंघन:1452 चाइल्ड पंक्ति को जोड़ या अद्यतन नहीं कर सकता: