Docker-compose.yml में एंट्रीपॉइंट के लिए तर्क कैसे पारित करें


159

मैं इस छवि का उपयोग करता हूं: dperson / samba

छवि यह परिभाषित कर रही है कि यह स्वयं का प्रवेश बिंदु है और मैं इसे ओवरराइड नहीं करना चाहता।

मुझे एंट्रीपॉइंट पर तर्क पारित करने की आवश्यकता है, केवल docker के साथ आसान:

docker run ... dperson/samba arg1 arg2 arg3

लेकिन यह docker_compose.yml के साथ कैसे करें?

अभी मैं वर्कअराउंड के रूप में उपयोग करता हूं:

command: samba.sh arg1 arg2 arg3

लेकिन यह संतोषजनक नहीं है क्योंकि मैं एंट्रीपॉइंट के पुनर्परिवर्तन को बाध्य करता हूं।

जवाबों:


128

commandखंड काम करता है @Karthik ऊपर कहते हैं।

एक सरल उदाहरण के रूप में, निम्न सेवा को चलाने के दौरान -inMemoryइसके साथ जोड़ा जाएगा ।ENTRYPOINTdocker-compose up

version: '2'
services:
  local-dynamo:
    build: local-dynamo
    image: spud/dynamo
    command: -inMemory

52

commandडॉकटर-कम्पोज़ में जो कुछ भी निर्दिष्ट किया गया है । उसे डॉकफाइल में entrypointपरिभाषित के लिए जोड़ा जाना चाहिए , बशर्ते कि डॉकफेराइल entrypointमें निष्पादन रूप में परिभाषित किया गया हो।

यदि एंट्रीपॉइंट को शेल रूप में परिभाषित किया गया है, तो किसी भी सीएमडी तर्कों को अनदेखा किया जाएगा।


20
कैसे कुछ उदाहरणों के बारे में "निष्पादन फ़ॉर्म" क्या है?
एरोन मैकमिलिन

13
ENTRYPOINT ["executable", "param1", "param2"](निष्पादन प्रपत्र, पसंदीदा) ENTRYPOINT command param1 param2(शेल फॉर्म) संदर्भ: डॉकरीफाइल संदर्भ
जोनासबी

16
एक उदाहरण इस जवाब को इतना मदद करेगा।
डागरूम

32

आप docker-compose runइसके बजाय उपयोग कर सकते हैं docker-compose upऔर अंत में तर्कों का सामना कर सकते हैं । उदाहरण के लिए:

docker-compose run dperson/samba arg1 arg2 arg3

यदि आपको अन्य डॉकटर कंटेनरों से कनेक्ट करने की आवश्यकता है, तो --service-portsविकल्प का उपयोग कर सकते हैं :

docker-compose run --service-ports dperson/samba arg1 arg2 arg3

1
झुंड में उदासी इस एक विकल्प नहीं है
Holms

15

डिफ़ॉल्ट प्रविष्टि को ओवरराइड करने के लिए, entrypointविकल्प का उपयोग करें । तर्कों का उपयोग करने के लिए command

यहाँ की जगह का उदाहरण है bashसाथ shमें ubuntuछवि:

version: '3'
services:
  sh:
    entrypoint: /bin/sh
    command: -c "ps $$(echo $$$$)"
    image: ubuntu
    tty: true
  bash:
    entrypoint: /bin/bash
    command: -c "ps $$(echo $$$$)"
    image: ubuntu
    tty: true

यहाँ उत्पादन है:

$ docker-compose up   
Starting test_sh_1                ... done
Starting 020211508a29_test_bash_1 ... done
Attaching to test_sh_1, 020211508a29_test_bash_1
sh_1    |   PID TTY      STAT   TIME COMMAND
sh_1    |     1 pts/0    Ss+    0:00 /bin/sh -c ps $(echo $$)
020211508a29_test_bash_1 |   PID TTY      STAT   TIME COMMAND
020211508a29_test_bash_1 |     1 pts/0    Rs+    0:00 ps 1

13

मैं जेनकिंस ssh गुलाम ' jenkinsci / ssh-slave ' के साथ एक ही मुद्दे का सामना कर रहा था । हालांकि, मेरा मामला थोड़ा जटिल था क्योंकि एक तर्क को पारित करना आवश्यक था जिसमें रिक्त स्थान शामिल थे। मैं इसे नीचे की तरह करने में कामयाब रहा (डॉकटराइल में प्रविष्टि बिंदु निष्पादन रूप में है):

command: ["some argument with space which should be treated as one"]
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.