2015-12-17 8 views
7

मैं एक MySQL डेटाबेस कंटेनर द्वारा समर्थित सोनारक्यूब कंटेनर सेट करने का प्रयास कर रहा हूं। मेरे डोकर-compose.yml:डॉकर-कंपोज़ - लिंक किए गए सेवा पोर्ट का पर्दाफाश करें

sonar: 
    environment: 
    - SONARQUBE_USER=sonar 
    - SONARQUBE_PASSWORD=sonar 
    - SONARQUBE_DATABASE=sonar 
    - SONARQUBE_JDBC_URL=jdbc:mysql://db:3306/sonar?useUnicode=true&characterEncoding=utf8 
    build: . 
    ports: 
    - "19000:9000" 
    - "19306:3306" 
    links: 
    - db 
db: 
    environment: 
    - MYSQL_ROOT_PASSWORD=root-secret 
    - MYSQL_USER=sonar 
    - MYSQL_PASSWORD=sonar 
    - MYSQL_DATABASE=sonar 
    image: mysql 

ports खंड में मैं SonarQube (वेब ​​इंटरफेस) और पोर्ट 3306 (MySQL कनेक्शन) से दोनों बंदरगाह 9000 को बेनकाब करने की कोशिश कर रहा हूँ।

"मुख्य" कंटेनर से किसी लिंक किए गए सेवा (जैसे db) से पोर्ट को बेनकाब करने का कोई तरीका है। sonar?

संपादित करें: बस मेरी ज़रूरतों को बेहतर ढंग से समझाने के लिए, मैं अपने बंदरगाहों को अपने localhost पर बेनकाब करना चाहता हूं। मुझे अपनी मशीन से दोनों बंदरगाहों तक पहुंच की आवश्यकता है, क्योंकि मैं सोनारक्यूब धावक को डेटाबेस तक पहुंच की आवश्यकता है और मैं डेटाबेस में कुछ प्रश्नों को भी चला सकता हूं, मेरी मशीन से, अन्य कंटेनर के अंदर नहीं।

+0

मैं समझता हूँ अभी व। लेकिन मेजबान को 'डीबी' एक्सपोस के बंदरगाह को बस क्यों न करें जैसे आपने सोनार के लिए किया था? सोनार अभी भी 'एक्सपोस' डीबी पोर्ट बंदरगाह का उपयोग करेगा, लेकिन लोकहोस्ट से आपकी क्वेरी उस पोर्ट वैल्यू का उपयोग करेगी जिसे आपने 'डीबी/पोर्ट्स सेक्शन में निर्दिष्ट किया होगा (नीचे मेरा संपादित उत्तर देखें) – VonC

उत्तर

6

आपको यह करने की आवश्यकता नहीं है: एक सेवा से EXPOSE पोर्ट सीधे दूसरे से दिखाई देता है (पहले से लिंक)।

कोई पोर्ट मानचित्रण आवश्यक (आप SonarQube से 9000 और 3306 के लिए करते हैं)
पोर्ट मानचित्रण मेजबान से एक कंटेनर तक पहुँचने के लिए आवश्यक है।
लेकिन कंटेनर से a (linked) container (दोनों एक ही डॉकर डिमन द्वारा प्रबंधित), EXPOSE in its Dockerfile में घोषित कोई भी पोर्ट सीधे पहुंच योग्य है।

मैं अपने बंदरगाहों को अपने स्थानीयहोस्ट में बेनकाब करना चाहता हूं। मैं, मेरी मशीन से दोनों बंदरगाहों के लिए उपयोग की जरूरत के रूप में मैं SonarQube धावक तो डेटाबेस

खैर लिए उपयोग की जरूरत ... db अनुभाग अपने स्वयं के बंदरगाह मानचित्रण अनुभाग होना चाहिए:

db: 
    ports: 
    - "xxx:yyyy" 
+0

किसी कारण से मैंने कोशिश की वह और मैंने काम नहीं किया। मुझे लगता है कि मेरा बाकी कॉन्फ़िगरेशन काफी गलत था, लेकिन अब एक आकर्षण की तरह काम करता है। TKS – resilva87

+0

क्या यह सच है जब डॉकर वर्चुअलएव में चल रहा है? मुझे यह काम करने के लिए प्रतीत नहीं होता है –

संबंधित मुद्दे