2016-04-02 9 views
6

मुझे mysql छवि बनाने और पोर्ट को 3306 पर बेनकाब करने के लिए डॉकर-कंपोज़ फ़ाइल मिली है, लेकिन जब मैं सीएमएस स्थापित करने का प्रयास करता हूं, तो यह मुझे त्रुटि देता है कि यह डेटाबेस से कनेक्ट नहीं हो सकता है। मैं पोर्ट 3306 स्कैन करने की कोशिश करता हूं और यह मुझे दिखा रहा है कि यह खुला है इसलिए mysql चल रहा है।डॉकर mysql कंटेनर से कनेक्ट नहीं हो सकता

दो डॉकर कंटेनर एक-दूसरे को क्यों नहीं देख सकते हैं?

phpfpm: 
    restart: always 
    extends: 
    file: php-fpm-5.6.yml 
    service: phpfpm 
    links: 
    - db:db 

nginx: 
    restart: always 
    image: nginx 
    ports: 
    - "8000:80" 
    links: 
    - phpfpm:phpfpm 
    volumes: 
    - ./nginx/vhost.conf:/etc/nginx/conf.d/default.conf 
    - ./app:/var/www/html 
    - ./log/nginx:/var/log/nginx 

db: 
    restart: always 
    image: mysql 
    ports: 
    - "3306:3306" 
    environment: 
    MYSQL_ROOT_PASSWORD: 123456 
    MYSQL_USER: user 
    MYSQL_PASSWORD: password 
    MYSQL_DATABASE: database 
+0

मैं सर्वर पर और निश्चित आईपी के साथ प्रयास करता हूं और यह अच्छा है। लेकिन लोकहोस्ट/127.0.0.1 के साथ क्या गलत है? –

उत्तर

14

डेटाबेस से कनेक्ट करने के लिए, आप एक होस्ट नाम के रूप में प्रदान किए गए लिंक/अन्य नाम का उपयोग:

यहाँ मेरी डोकर-लिखें फ़ाइल है। तो, आप सीएमएस db होस्ट नाम के रूप में, और पोर्ट का उपयोग MySQL से कनेक्ट कर सकते 3306.

आप स्थानीय होस्ट या 127.0.0.1 से कनेक्ट करने में सक्षम नहीं होगा क्योंकि "स्थानीय होस्ट" अंदर स्थानीय होस्ट प्रत्येक कंटेनर है तो, , phpfpm कंटेनर में "localhost" का उपयोग करके phpfpm कंटेनर के अंदर एक MySQL डेटाबेस से कनेक्ट करने का प्रयास करेगा, लेकिन वहां कोई सर्वर नहीं चल रहा है।

नोट आप की जरूरत नहीं है कि ("3306":"3306") MySQL बंदरगाहों प्रकाशित अगर आप केवल जुड़ा हुआ कंटेनर के अंदर से डेटाबेस से कनेक्ट। बंदरगाहों को प्रकाशित करना सार्वजनिक नेटवर्क इंटरफ़ेस पर MySQL का खुलासा करता है, जो "इंटरनेट"

+2

मैंने "लोकहोस्ट" को "डीबी" के साथ बदलने के साथ समस्या को ठीक किया। आपके समय और आपकी सभी मदद के लिए धन्यवाद :) –

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