Подтвердить что ты не робот

Как передать аргументы в entrypoint в файле docker-compose.yml

Я использую этот образ: dperson/samba

Изображение определяет его собственную точку входа, и я не хочу ее переопределять.

Мне нужно передать аргументы в точку входа, просто с докере:

docker run ... dperson/samba arg1 arg2 arg3

Но как это сделать с помощью docker_compose.yml?

Сейчас я использую в качестве обходного пути:

command: samba.sh arg1 arg2 arg3

Но это не удовлетворяет, поскольку я заставляю переопределить точку входа.

4b9b3361

Ответ 1

Предложение command работает, как говорит @Karthik.

В качестве простого примера следующая служба будет иметь -inMemory, добавленную к ее ENTRYPOINT, когда выполняется docker-compose up.

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

Ответ 2

Все, что указано в command в файле docker-compose.yml, должно быть добавлено к entrypoint, определенному в файле Docker, при условии, что entrypoint определяется в форме exec в файле Docker.

Если EntryPoint определен в форме оболочки, то любые аргументы CMD будут проигнорированы.

Ответ 3

Вы можете использовать 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

Ответ 4

Я столкнулся с той же проблемой с jenkins ssh slave ' jenkinsci/ssh-slave ', однако мой случай был немного сложным, потому что необходимо было передать аргумент, содержащий пробелы. Мне удалось сделать это, как показано ниже (точка входа в dockerfile находится в форме exec):

command: ["some argument with space which should be treated as one"]

Надеюсь это поможет. Благодарю.

Ответ 5

Чтобы переопределить точку входа по умолчанию, используйте опцию точки 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