Как передать аргументы в entrypoint в файле docker-compose.yml
Я использую этот образ: dperson/samba
Изображение определяет его собственную точку входа, и я не хочу ее переопределять.
Мне нужно передать аргументы в точку входа, просто с докере:
docker run ... dperson/samba arg1 arg2 arg3
Но как это сделать с помощью docker_compose.yml?
Сейчас я использую в качестве обходного пути:
command: samba.sh arg1 arg2 arg3
Но это не удовлетворяет, поскольку я заставляю переопределить точку входа.
Ответы
Ответ 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