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

डोकर-लिखें में कंटेनर प्रविष्टि बिंदु के बाद स्क्रिप्ट चलाएँ

आप मूल command . को ओवरराइड कर रहे हैं और आप इस स्क्रिप्ट में पोस्टग्रेज शुरू नहीं करते हैं, इसलिए आपका डेटाबेस उपलब्ध नहीं है।

आप अपने डेटाबेस इनिशियलाइज़ेशन को कंटेनर की एंट्रीपॉइंट डायरेक्टरी में डाल सकते हैं:/docker-entrypoint-initdb.d . यह सभी *.sh . को निष्पादित करता है और *.sql फ़ाइलें इस निर्देशिका में हैं और मूल command . को स्पर्श नहीं करती हैं .
इस निर्देशिका की सभी फ़ाइलें कंटेनर निर्माण पर वर्णानुक्रम में स्वचालित रूप से निष्पादित होती हैं . इसलिए, अपनी स्क्रिप्ट/एसक्यूएल फाइलों को एंट्रीपॉइंट में जोड़ने के लिए वॉल्यूम बनाएं और कंटेनर को उन्हें निष्पादित करने दें। यह आधिकारिक पोस्टग्रेज दस्तावेज़ीकरण में वर्णित है, अनुभाग "इस छवि का विस्तार कैसे करें"

आपकी लिखें फ़ाइल तब कुछ इस तरह बदल जाती है:

postgres:
  build: ./postgres
  volumes:
    - /shared_folder/postgresql:/var/lib/postgresql
    - ./db-init-scripts:/docker-entrypoint-initdb.d
  ports:
    - "5432:5432"

जबकि एक स्थानीय निर्देशिका, उदा। db-init-scripts , में आपकी आरंभीकरण स्क्रिप्ट शामिल हैं (यदि आप चाहें तो इसका नाम बदलें)। कॉपी create_db.sh इस फ़ोल्डर में और जब आप एक नया कंटेनर बनाते हैं तो इसे स्वचालित रूप से निष्पादित किया जाएगा।

कई डेटाबेस-छवियां इस प्रविष्टि बिंदु-निर्देशिका को देखती हैं, जो बहुत सुविधाजनक है।

आपका container_name: postgres बेमानी लगता है।




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. लगातार दोहराव/डुप्लिकेट की संख्या का आदेश दिया

  2. तालिका उपयोगकर्ताओं को नहीं छोड़ सकता क्योंकि अन्य वस्तुएं इस पर निर्भर करती हैं

  3. PostgreSQL क्वेरी के लिए सही इंडेक्स चुनना

  4. java.lang.NoSuchFieldError:स्प्रिंग 3, मावेन, जेपीए, c3p0 के साथ हाइबरनेट में कोई नहीं

  5. प्लेसहोल्डर के रूप में प्रश्न चिह्न की व्याख्या करने से पीडीओ को कैसे रोकें?