मुझे नहीं पता कि मैं क्या गलत कर रहा हूं, लेकिन मैं बस docker-compose up
पुराने कंटेनरों को सिस्टम से पूरी तरह से हटाए बिना हमारी रजिस्ट्री से नवीनतम छवि का उपयोग करने के लिए नहीं मिल सकता । ऐसा लगता है कि रचना पहले से शुरू की गई छवि का उपयोग कर रही है, हालांकि डॉक-कंपोज पुल ने एक नई छवि प्राप्त की है।
मैंने देखा कि हमेशा ताजा चित्रों से कंटेनरों को फिर से बनाने के लिए डॉक-कंपोज़ कैसे प्राप्त करें? जो मेरे मुद्दे के समान लग रहा था, लेकिन मेरे द्वारा दिए गए समाधानों में से कोई भी मेरे लिए काम नहीं करता है, क्योंकि मैं एक समाधान की तलाश कर रहा हूं जो मैं उत्पादन सर्वर पर उपयोग कर सकता हूं और वहां मैं उन्हें शुरू करने से पहले सभी कंटेनरों को हटाना नहीं चाहता हूं। फिर से (संभव डेटा हानि?)। मैं केवल परिवर्तित छवियों के नए संस्करण का पता लगाने, उन्हें खींचने और फिर उन नई छवियों के साथ सेवाओं को पुनरारंभ करने के लिए रचना करना चाहूंगा।
मैंने इसके लिए एक सरल परीक्षण परियोजना बनाई जिसमें प्रत्येक नए बिल्ड पर वृद्धि के लिए केवल एक संस्करण एनआर प्राप्त करना एकमात्र लक्ष्य है। संस्करण nr तब प्रदर्शित होता है जब मैं उस nginx सर्वर को ब्राउज़ करता हूं जो बनाया जाता है (यह स्थानीय रूप से अपेक्षित रूप से काम करता है)।
डॉक वर्जन: 1.11.2 डॉकटर-कंपोज वर्जन: 1.7.1 OS: डॉक-टूलबॉक्स का उपयोग करके दोनों CentOS 7 और OS X 10.10 पर परीक्षण किया गया
मेरा डॉकटर-कंपोज.लिम:
version: '2'
services:
application:
image: ourprivate.docker.reg:5000/ourcompany/buildchaintest:0.1.8-dev
volumes:
- /var/www/html
tty: true
nginx:
build: nginx
ports:
- "80:80"
volumes_from:
- application
volumes:
- ./logs/nginx/:/var/log/nginx
php:
container_name: buildchaintest_php_1
build: php-fpm
expose:
- "9000"
volumes_from:
- application
volumes:
- ./logs/php-fpm/:/var/www/logs
हमारे jenkins सर्वर पर मैं छवि बनाने और टैग करने के लिए निम्नलिखित चलाता हूं
cd $WORKSPACE && PROJECT_VERSION=$(cat VERSION)-dev
/usr/local/bin/docker-compose rm -f
/usr/local/bin/docker-compose build
docker tag ourprivate.docker.reg:5000/ourcompany/buildchaintest ourprivate.docker.reg:5000/ourcompany/buildchaintest:$PROJECT_VERSION
docker push ourprivate.docker.reg:5000/ourcompany/buildchaintest
ऐसा लगता है कि जब से बिल्ड पूरा होता है और हर बार संस्करण एनआरपी टकरा जाता है, तो मुझे लगता है कि यह एक नया संस्करण होने वाला है।
अगर मैं अब चला
docker-compose pull && docker-compose -f docker-compose.yml up -d
मेरे कंप्यूटर पर एक फ़ोल्डर में, जहां सामग्री केवल डॉक-कंपोज़ है। nginx और php सेवाओं का निर्माण करने के लिए आवश्यक डॉकफाइल्स हैं, जो आउटपुट मुझे मिलता है वह नवीनतम संस्करण संख्या नहीं है जैसा कि रजिस्ट्री में टैग किया गया है या दिखाया गया है docker-compose.yml (0.1.8) में, लेकिन उससे पहले का संस्करण, जो 0.1.7 है। हालांकि पुल कमांड का आउटपुट बताता है कि छवि का एक नया संस्करण लाया गया था:
Pulling application (ourprivate.docker.reg:5000/ourcompany/buildchaintest:latest)...
latest: Pulling from ourcompany/buildchaintest
Digest: sha256:8f7a06203005ff932799fe89e7756cd21719cccb9099b7898af2399414bfe62a
Status: Downloaded newer image for docker.locotech.fi:5000/locotech/buildchaintest:0.1.8-dev
अगर मैं चलाऊं तो ही
docker-compose stop && docker-compose rm -f
और फिर docker-compose up
कमांड को चलाएं क्या मुझे उम्मीद के मुताबिक स्क्रीन पर दिखाने के लिए नया संस्करण मिलेगा।
क्या यह डॉकटर-कम्पोज़ का व्यवहार है? यानी मुझे हमेशा उत्पादन सर्वर पर भी docker-compose rm -f
चलने up
से पहले हमेशा करना चाहिए ? या मैं यहां अनाज के खिलाफ कुछ कर रहा हूं, जिसके कारण यह काम नहीं कर रहा है?
लक्ष्य के लिए हमारी निर्माण प्रक्रिया का निर्माण करना है और docker-compose.yml में आवश्यक छवियों के टैग किए गए संस्करणों को बनाना है, उन्हें हमारी निजी रजिस्ट्री पर धकेलना और फिर "do-compose को कॉपी करने के लिए" प्रोडक्शन-स्टेप के लिए रिलीज़ करना है। उत्पादन सर्वर के लिए yml और उत्पादन docker-compose pull && docker-compose -f docker-compose.yml up -d
शुरू करने के लिए नई छवि के लिए चलाते हैं । अगर किसी के पास इस पर युक्तियां हैं या इस तरह के सेटअप के लिए एक सर्वोत्तम अभ्यास ट्यूटोरियल को इंगित कर सकते हैं जो बहुत सराहना की जाएगी।
docker-compose up -d --force-recreate
काम नहीं किया?