docker-compose.ymlのエントリポイントに引数を渡す方法


158

この画像を使用します:dperson / samba

画像はそれ自体のエントリポイントを定義しており、上書きしたくありません。

エントリポイントに引数を渡す必要があります。Dockerを使用するだけで簡単です。

docker run ... dperson/samba arg1 arg2 arg3

しかし、docker_compose.ymlでそれを行う方法は?

現在、私は回避策として使用します:

command: samba.sh arg1 arg2 arg3

しかし、私はエントリポイントの再定義を強制するので、それは満足のいくものではありません。

回答:


127

このcommand句は、@ Karthikが前述したように機能します。

簡単な例として、次のサービスにはwhen が実行-inMemoryされるENTRYPOINTときにdocker-compose upが追加されます。

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

52

docker command-compose.ymlで指定されているものはentrypointすべて、Dockerfileのentrypointexec形式で定義されている場合、Dockerfileで定義されたものに追加されます。

EntryPointがシェル形式で定義されている場合、CMD引数は無視されます。


20
いくつかの例はどうですか。「exec form」とは何ですか?
アーロン・マクミリン2017

13
ENTRYPOINT ["executable", "param1", "param2"](exec形式、推奨)ENTRYPOINT command param1 param2(シェル形式)参照:Dockerfile参照
jonasbn 2017

16
例を挙げれば、この答えがとても役に立ちます。
Dagrooms 2017

32

docker-compose run代わりに使用docker-compose upして、最後に引数を付加できます。例えば:

docker-compose run dperson/samba arg1 arg2 arg3

他のDockerコンテナーに接続する必要がある場合は、次の--service-portsオプションを使用できます。

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


15

デフォルトのエントリポイントを上書きするには、entrypointオプションを使用します。引数を渡すには、を使用しますcommand

ここで交換の一例であるbashshubuntu画像が:

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

私はjenkins sshスレーブ ' jenkinsci / ssh-slave 'で同じ問題に直面していました。ただし、スペースを含む引数を渡す必要があったため、私のケースは少し複雑でした。以下のようにしてなんとかしました(dockerfileのエントリーポイントはexec形式です):

command: ["some argument with space which should be treated as one"]
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.