ASP.NET कोर एप्लिकेशन को चलाने के लिए, मैंने एक डॉकफाइल उत्पन्न किया जो एप्लिकेशन का निर्माण करता है और कंटेनर में स्रोत कोड को कॉपी करता है, जिसे जेनकिन्स का उपयोग करके गिट द्वारा प्राप्त किया जाता है। इसलिए अपने कार्यक्षेत्र में, मैं निम्नलिखित कार्य करता हूं:
WORKDIR /app
COPY src src
जबकि जेनकिन्स मेरे मेजबान पर फाइलों को सही तरीके से गिट के साथ अपडेट करता है, डॉकर इसे मेरी छवि पर लागू नहीं करता है।
निर्माण के लिए मेरी मूल स्क्रिप्ट:
#!/bin/bash
imageName=xx:my-image
containerName=my-container
docker build -t $imageName -f Dockerfile .
containerRunning=$(docker inspect --format="{{ .State.Running }}" $containerName 2> /dev/null)
if [ "$containerRunning" == "true" ]; then
docker stop $containerName
docker start $containerName
else
docker run -d -p 5000:5000 --name $containerName $imageName
fi
मैं अलग अलग बातें की तरह करने की कोशिश की --rm
और --no-cache
के लिए पैरामीटर docker run
है और यह भी रोक / कंटेनर को हटाने से पहले नया एक का निर्माण है। मुझे यकीन नहीं है कि मैं यहां क्या गलत कर रहा हूं। ऐसा लगता है कि डॉकटर छवि को सही ढंग से अपडेट कर रहा है, क्योंकि कॉल के COPY src src
परिणामस्वरूप लेयर आईडी और कैश कॉल नहीं होगी:
Step 6 : COPY src src
---> 382ef210d8fd
कंटेनर को अपडेट करने का अनुशंसित तरीका क्या है?
मेरा विशिष्ट परिदृश्य यह होगा: एप्लिकेशन डॉकटर कंटेनर में सर्वर पर चल रहा है। अब एप्लिकेशन के कुछ हिस्सों को अपडेट किया जाता है, उदाहरण के लिए एक फाइल को संशोधित करके। अब कंटेनर को नया संस्करण चलाना चाहिए। डॉकर एक मौजूदा कंटेनर को संशोधित करने के बजाय एक नई छवि बनाने की सलाह देता है, इसलिए मुझे लगता है कि मेरे द्वारा किए गए पुनर्निर्माण का सामान्य तरीका सही है, लेकिन कार्यान्वयन में कुछ विस्तार को सुधारना होगा।