मेरे पास एक रेल ऐप है। विकास और परीक्षण वातावरण में, मैं चाहता हूं कि रेल ऐप एक डॉकराइज्ड पोस्टग्रेज़ से कनेक्ट हो। रेल ऐप स्वयं एक कंटेनर में नहीं होगा - बस पोस्टग्रेस।पोस्टग्रेज़ डॉकर कंटेनर से कनेक्ट करने के लिए डेटाबेस.इमएल कैसे सेट करें?
मेरा डेटाबेस.मिल कैसा दिखना चाहिए?
मेरे पास एक डॉकर default
मशीन चल रहा है।
postgres:
image: postgres
ports:
- "5432:5432"
environment:
- POSTGRES_USER=timbuktu
- POSTGRES_PASSWORD=mysecretpassword
मैं docker-compose up
भाग गया Postgres चलाने के लिए: मैं डोकर-compose.yml बनाया।
तब मैं डोकर आभासी मशीन का IP पता प्राप्त करने के लिए docker-machine ip default
भाग गया, और मैं तदनुसार database.yml अद्यतन:
...
development:
adapter: postgresql
host: 192.168.99.100
port: 5432
database: timbuktu_development
username: timbuktu
password: mysecretpassword
encoding: unicode
pool: 5
...
तो सब कुछ ठीक है और मैं अपने कंटेनर में Postgres से जुड़ सकते हैं।
लेकिन, अगर कोई अन्य रेपो खींचता है, तो वे मेरे डेटाबेस.इएमएल का उपयोग करके पोस्टग्रेस से कनेक्ट नहीं हो पाएंगे, क्योंकि उनके डॉकर डिफ़ॉल्ट मशीन का आईपी पता मेरा से अलग होगा।
तो मैं इसके लिए अपने डेटाबेस.आईएमएल को कैसे बदल सकता हूं?
एक विचार है कि मुझे उनके डॉकर डिफ़ॉल्ट मशीन का आईपी पता docker-machine env default
चलाकर, और env DOCKER_HOST लाइन को उनके bash_rc में चिपकाकर पूछना है। उदाहरण के लिए,
export DOCKER_HOST="tcp://192.168.99.100:2376"
तब मेरे database.yml मेजबान लाइन
host: <%= ENV['DOCKER_HOST'].match(/tcp:\/\/(.+):\d{3,}/)[1] %>
शामिल कर सकते हैं लेकिन यह बदसूरत और hacky महसूस करता है। क्या कोई बेहतर तरीका है?
आपका प्रश्न वास्तव में मुझे मेरे डॉकर सेटअप के साथ दबाया :) – theDrifter