2015-05-20 7 views
6

के साथ पंजीकृत करें, मैं अपने डॉकर वीएम के अंदर स्प्रिंग क्लाउड यूरेका चला रहा हूं। मेरे पास पंजीकरण करने वाली सेवाएं हैं, लेकिन वे अपने आईपी एड्रेस का उपयोग डॉकर वीएम के अंदर से करते हैं, लेकिन उन्हें सही तरीके से उपयोग करने में सक्षम होने के लिए मुझे उन्हें आईपी एड्रेस का उपयोग करने की आवश्यकता है, जिसे मैं वीएम के बाहर से एक्सेस कर सकता हूं।डॉकर से यूरेका को कस्टम आईपी

उदाहरण के लिए मेरे वीएम के अंदर 172.x.x.x का उपयोग करके रजिस्टर करें और मैं 1 9 2.168.x.x.x का उपयोग कर अपने ब्राउज़र से आरईएसटी इंटरफ़ेस तक पहुंच सकता हूं। मुझे उन्हें 1 9 2.168.x.x.x के रूप में पंजीकरण करने की आवश्यकता है।

मैं एक विशिष्ट आईपी एड्रेस के साथ पंजीकरण करने के लिए अपनी सेवा कैसे बता सकता हूं?

उत्तर

0

आप अपने application.yml में यह कॉन्फ़िगर कर सकते हैं:

eureka: 
    instance: 
     ipAddress: 192.168.x.x 
+0

यह ठीक है, लेकिन क यदि आईपी गतिशील रूप से हर बार बदलता है? मैं कंटेनर नहीं, होस्ट आईपी का पर्दाफाश करना चाहता हूं। –

+0

यदि होस्ट का आईपी गतिशील रूप से बदलता है तो इस आईपी को पर्यावरण चर में कंटेनर में पास करें और स्प्रिंग कॉन्फ़िगरेशन में इस चर का उपयोग करें। – Tyutyutyu

+1

यही सवाल है, मैं AWS BeansTalk सेवा का उपयोग कर कंटेनर के अंदर होस्ट आईपी पता कैसे पास करूं? –

0

आप निम्न उदाहरण में application.yml

में यूरेका विन्यास में वातावरण चरों का उपयोग मैं करने के लिए $HOST और $PORT वातावरण चर का उपयोग कर रहा कर सकते हैं यूरेका क्लाइंट को बताएं कि किस मूल्य का उपयोग करना है। मेरे मामले में, ये चर मेसोस/मैराथन द्वारा निर्धारित किए जाते हैं। आपको डॉकर द्वारा सेट किए गए अन्य उपयोगी चर मिल सकते हैं।

मेरे लिए निम्नलिखित काम करता है:

eureka: 
    client: 
    serviceUrl: 
     defaultZone: http://discovery.marathon.mesos:31444/eureka/ 
    registerWithEureka: true 
    fetchRegistry: true 
    instance: 
    appname: configserver 
    health-check-url: /health 
    prefer-ip-address: true 
    ip-address: "${HOST}" # mesos/marathon populates this in the environment 
    non-secure-port: "${PORT}" # mesos/marathon populates this in the environment 
2

दोनों पिछले जवाब सही हैं, लेकिन मैं कॉपी-पेस्ट को आसान बनाने के लिए होगा।

आपको अपने कंटेनर को शुरू करते समय और अपने स्प्रिंग बूट एप्लिकेशन में होस्ट होस्ट के साथ एक पर्यावरण परिवर्तक जोड़ना चाहिए। फ़ाइल फ़ाइल में शामिल हैं।

application.yml

eureka: 
    instance: 
    # Necessary for Docker as it doesn't have DNS entries 
    prefer-ip-address: true 
    # Necessary for Docker otherwise you will get 127.0.0.x ip 
    ip-address: "${HOST}" 
    client: 
    serviceUrl: 
     # Location of your eureka server 
     defaultZone: http://192.168.0.107:8761/eureka/ 

डोकर

docker run -p <port>:<port> -e HOST='192.168.0.106' <image name> 

साथ चल रहा है के साथ चल रहा है डोकर-रचना

my_service: 
    image: image_name 
    environment: 
    - HOST=192.168.0.106 
    ports: 
    - your_port:container_port 
संबंधित मुद्दे