2016-07-29 9 views
6

मैं जेनकींस के लिए एक डॉकर बिल्ड को अनुकूलित करने की कोशिश कर रहा हूं। मैं अपनी डॉकर-कंपोज़ फ़ाइल का पालन कर रहा हूं और मैं जेनकिन्सफाइल बना रहा हूं जो प्रत्येक कंटेनर बना रहा है और उन्हें एक साथ जोड़ रहा है। जिस समस्या में मैं दौड़ रहा हूं वह यह है कि डॉकर-कंपोज़ फाइलें एक संदर्भ घोषित करती हैं, जहां डॉकरफ़ाइल नहीं है। जहां तक ​​मैं समझता हूं, जेनकींस उस संदर्भ को सेट करेगा जहां डॉकरफ़ाइल है, जो जेनकिन्सफाइल या डॉकर-कंपोज़ फ़ाइल बना रहा है या नहीं, इस पर निर्भर करता है कि फ़ाइलों को एक अलग रिश्तेदार स्थान में कॉपी किया जाता है।जेनकिन्सफाइल में docker.build के लिए कस्टम संदर्भ कैसे सेट करें

फ़ोल्डर संरचना है:

workspace 
    |-docker 
     |-db 
      |-Dockerfile 
      |-entrypoint.sh 

यह कैसे Dockerfile सवाल

COPY docker/db/entrypoint.sh/

में फ़ाइल के लिए कॉपी अनुदेश यह कैसे मेरे jenkinsfile फ़ाइल बनाता है वाणी है।

db: 
build: 
    context: . 
    dockerfile: docker/db/Dockerfile 

जो परियोजना की जड़ में संदर्भ कहते हैं: मेरी जानकारी के लिए कौन सा है कि निर्देशिका

docker.build("db", "${WORKSPACE}/docker/db") 

डोकर-लिखें फ़ाइल इसे पसंद वाणी पर संदर्भ डालता है।

वहाँ किसी भी तरह से डोकर-लिखें फ़ाइल के रूप में एक ही संदर्भ का उपयोग करने के लिए इतना है कि Dockerfile के प्रति अनुदेश अपरिवर्तित और दोनों जेनकींस और के लिए मान्य रह सकते हैं एक jenkinsfile बताने के लिए है डोकर-रचना? यदि यह संभव नहीं है, तो क्या किसी को किसी भी वैकल्पिक समाधान के बारे में पता है?

उत्तर

11

यह पता चला है कि मैं डॉकर-पाइपलाइन-प्लगइन के पिछले संस्करण (1.6) को खींच रहा था। प्रश्न में कार्य को बाद में अद्यतन किया गया है (1.7) दूसरे पैरामीटर को संदर्भ के बाहर एक डॉकरफ़ाइल स्थान निर्दिष्ट करने की अनुमति देने के लिए।

मेरी Jenkinsfile में अद्यतन कथन है:

return docker.build("db", "-f docker/db/Dockerfile .") 

और ये मेरे कंटेनर डेवलपर के डोकर-लिखें या Dockerfiles की उम्मीद संदर्भ को संशोधित किए बिना निर्माण करने के लिए अनुमति देता है।

+0

क्या मैं अकेला हूं जो जेनकिंस में डॉकर एकीकरण को पूरी तरह से बेकार करता है? मेरे पास डॉकर पाइपलाइन प्लगइन का संस्करण 1.14 है और ऐसा लगता है कि दूसरा तर्क पहले ही हटा दिया गया है :-( – schneida

+1

@schneida मैं इस बिंदु पर 1.13 चला रहा हूं, और इस उत्तर में प्रारूप अभी भी मेरे लिए काम कर रहा है। आप कोशिश कर सकते हैं 1.13 तक डाउनग्रेडिंग यह देखने के लिए कि क्या इससे कोई फर्क पड़ता है। अन्यथा, इस प्रारूप ने मेरे लिए 'डीबी-एफ डॉकर/डीबी/डॉकरफाइल' भी काम किया है जो तर्कों को जोड़ता है, और संदर्भ को छोड़ देता है –

0

आइटम docker-compose पर आइटम को ओमनीट करें ताकि यह डॉकरफ़ाइल के स्थान पर डिफ़ॉल्ट हो।

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