डोकर रचना ऐसी कोई सेवा: myapp

मैंने इसके साथ एक छवि चलाई है:'डॉकर-कंपोज़ अप'

'डॉकर पीएस' के साथ मुझे मिलता है:

CREATED             STATUS              PORTS                    NAMES55e1fd18acf1        simpleappnodedocker_web   "node app.js"            6 seconds ago       Up 6 seconds        0.0.0.0:9000->3000/tcp   myapp9879ff20e241        postgres:9.6              "docker-entrypoint..."   36 hours ago        Up 36 hours         0.0.0.0:5432->5432/tcp   nd-db

मैं शेल में प्रवेश करने के लिए बैश चलाने की कोशिश करता हूं, लेकिन मुझे एक त्रुटि मिलती है, इसे कैसे हल किया जाए, मुझे लगता है कि मैं कुछ गलत कर रहा हूं ।

$docker-compose run myapp /bin/bash   ERROR: No such service: myapp

डॉकर-लिखें।yml:

version: '2'services:  web:    container_name: myapp    build: .    command: node app.js    ports:      - "9000:3000"

मुझे लगता है कि आप के संबंध मिल गया docker और docker-compose गलत:

docker-compose चारों ओर एक आवरण है docker. अपना काम करना docker-compose अपने config: docker-compose.yaml

अपने उदाहरण को आगे बढ़ाते हुए:

बनाएँ डॉकर-लिखें।yaml:

version: '2'services:  web:    container_name: myapp    build: .    command: node app.js    ports:      - "9000:3000"

उपयोग करें docker-compose कंटेनर शुरू करने और चल रहे कंटेनर में एक कमांड चलाने के लिए:

docker-compose updocker-compose exec web /bin/bash

docker-compose सेवा के नाम का उपयोग करता है-आपके मामले में यह है web - जबकि docker कंटेनर नाम का उपयोग करता है - इस मामले में myapp.

तो चलाने के लिए /bin/bash के माध्यम से docker, आप निम्नलिखित का उपयोग करेंगे:

docker exec -ti myapp /bin/bash

आप हटा सकते हैं container_name से docker-compose.yaml, फिर कंटेनर को स्वचालित रूप से नाम दिया जाएगा docker-compose - सेवा के समान, लेकिन के नाम के साथ उपसर्ग docker-compose ढेर (के foldername जहां docker-compose.yaml स्थित है) ।

एक और जवाब सही है, लेकिन किसी भी तरह से इसकी व्यापक व्याख्या में थोड़ा भ्रमित था;डॉकर और डॉकर-रचना और उद्धरण के संबंध;

प्रश्न में त्रुटि से छुटकारा पाने के लिए मुख्य बात यह है कि त्रुटि क्या कहती है: और उद्धरण;त्रुटि: ऐसी कोई सेवा नहीं: और उद्धरण; इसलिए, आप चाहिए ऐसी सेवा चुनें जो आपकी कंपोज़ फ़ाइल में हो, और नहीं कंटेनर का नाम। उदाहरण में, यह है web, और नहीं myapp.

आपके मामले में, भागो मत

docker-compose run --rm myapp bash

लेकिन भागो

docker-compose run --rm web bash

यह भी सुनिश्चित करें कि आप अपने डॉकर-कंपोज़ की तुलना में उसी फ़ोल्डर में कमांड चला रहे हैं । वाईएमएल, अन्यथा आपको वही त्रुटि संदेश मिलेगा लेकिन ऊपर फिलिप का जवाब काम नहीं करेगा ।