मैं एक ubuntu (ec2-instance) सर्वर पर nginx के साथ एक dockerized django ऐप चला रहा हूं। मेरा विचार डोकर-मशीन के साथ तैनात करना है।

जब मैं अपने ईसी 2 में एसएसएच करता हूं और वहां अपना ऐप कॉपी करता हूं और फिर मेरी डॉकर-कंपोज़ फ़ाइल को स्पिन करता हूं, तो सबकुछ ठीक से काम करता है और ऐप पूरी तरह से चलता है। लेकिन मैं सर्वर में ssh'ing के बिना लेकिन docker मशीन का उपयोग किए बिना अपने कंटेनर को स्पिन करना चाहूंगा।

जब मैं अपने निष्पादन आदेशों को अपने ईसी 2 उदाहरण पर इंगित करता हूं और वही आदेश चलाता हूं (docker-compose -f production.yml up --build) मुझे निम्न त्रुटि मिलती है:

सेवा उत्पादन शुरू नहीं कर सकता-nginx-कंटेनर: OCI रनटाइम निर्माण विफल: कंटेनर_लिनक्स। /myfolder/myproject/compose/production/nginx/myconf.conf\\" से rootfs \\"/var/lib/docker/overlay2/44675a2cf4ac6e3052c9df3bd6fbb35b1ece33736d632199572c6a1c90965c12/merged"/varlib"/varlib2/merged\\" पर 44675a2cf4ac6e3052c9df3bd6fbb35b1ece33736d632199572c6a1c90965c12/merged/etc/nginx/conf.d/default.conf\\" कारण \\"एक निर्देशिका नहीं\\"\"": अज्ञात: क्या आप किसी फ़ाइल पर निर्देशिका माउंट करने का प्रयास कर रहे हैं) (या वाइस- ? जांचें कि क्या निर्दिष्ट होस्ट पथ मौजूद है और अपेक्षित प्रकार है

मुझे लगता है कि जिस लाइन के बारे में डॉकर शिकायत कर रहा है वह यह है:

- ./compose/production/nginx/myconf.conf:/etc/nginx/conf.d/default.conf

मैं अपनी nginx फ़ाइल से nginx docker कंटेनर के डिफ़ॉल्ट कॉन्फिगरेशन में अपने कॉन्फिगरेशन को मैप करने का प्रयास कर रहा हूं। myconf.conf वहां है और यह एक फाइल है।

मेरा अनुमान है कि फ़ाइल को मेरे स्थानीय कंप्यूटर से सर्वर पर कंटेनर में माउंट करने में कोई समस्या है? लेकिन मुझे नहीं पता कि मैं इसे कैसे ठीक कर सकता हूं .... साथ ही इस त्रुटि पर अन्य प्रश्न मुझे कहीं नहीं मिलते।

उदाहरण की ओर इशारा करते हुए डॉक मशीन के साथ चलने वाली कमांड को ठीक वैसा ही नहीं करना चाहिए, जब मैं अपने उदाहरण में ssh'ing कर रहा हूं और इसे वहां से चलाता हूं? दुर्भाग्य से डॉकटर के बारे में मेरा ज्ञान सीमित है। अगर कोई मेरी मदद कर सकता है तो मैं बहुत आभारी रहूंगा।

बहुत बहुत अग्रिम धन्यवाद और कृपया निम्नलिखित में मेरा विन्यास देखें:

production-nginx-container:
    container_name: 'production-nginx-container'
    image: nginx:latest
    ports:
      - "80:80"
      - "443:443"
    volumes:
      - ./compose/production/nginx/myconf.conf:/etc/nginx/conf.d/default.conf
      - /etc/letsencrypt/live/mydomain.de/fullchain.pem:/etc/letsencrypt/live/mydomain.de/fullchain.pem
      - /etc/letsencrypt/live/mydomain.de/privkey.pem:/etc/letsencrypt/live/mydomain.de/privkey.pem
    depends_on:
      - django


0
Micromegas 20 जिंदा 2020, 15:50

1 उत्तर

सबसे बढ़िया उत्तर

भले ही आप रिमोट $DOCKER_HOST का उपयोग कर रहे हों, डॉकर के पास स्थानीय सामग्री को दूरस्थ कंटेनर में माउंट करने का कोई तरीका नहीं है। docker run -v विकल्प और डॉकर कंपोज़ volumes: बाइंड माउंट हमेशा होस्ट पर पथ के रूप में लिया जाता है जहां डॉकर डेमॉन चल रहा है, न कि जहां आप docker कमांड चला रहे हैं। आपको कॉन्फिग फाइल और टीएलएस सर्टिफिकेट जैसी चीजों को रिमोट होस्ट पर कॉपी करना होगा, और जब तक आप ऐसा कर रहे हों, तब तक आप कंटेनर को भी लॉन्च करने के लिए ssh का उपयोग कर सकते हैं।

आप इस पर विचार कर सकते हैं कि क्या Ansible, Chef, या Salt Stack जैसा कोई ऑटोमेशन टूल आपकी ज़रूरतों को यहाँ पूरा करता है। इनमें आम तौर पर "सुनिश्चित करें कि यह फ़ाइल रिमोट सिस्टम पर है" और "इस कंटेनर को किसी रिमोट सिस्टम पर शुरू करें" दोनों के लिए अंतर्निहित टूल हैं। डॉकर चलाने के लिए स्थानीय वीएम की आवश्यकता के विशिष्ट मामले को छोड़कर मैं डॉकर मशीन का उपयोग करने की अनुशंसा नहीं करता (आमतौर पर डॉकर टूलबॉक्स एप्लिकेशन के माध्यम से, विंडोज 7 या अन्य वातावरण पर जहां "देशी" डॉकर एप्लिकेशन नहीं है जिसका आप उपयोग कर सकते हैं) .

1
David Maze 20 जिंदा 2020, 14:27