Answers:
该command
子句确实如上述@Karthik所述工作。
作为一个简单的示例,以下服务将在运行时-inMemory
添加其服务。ENTRYPOINT
docker-compose up
version: '2'
services:
local-dynamo:
build: local-dynamo
image: spud/dynamo
command: -inMemory
command
如果entrypoint
在dockerfile中entrypoint
以exec形式定义,则docker -compose.yml中指定的任何内容都应追加到Dockerfile 中的定义。
如果EntryPoint是以shell形式定义的,则任何CMD参数都将被忽略。
ENTRYPOINT ["executable", "param1", "param2"]
(exec形式,首选)ENTRYPOINT command param1 param2
(shell形式)参考:Dockerfile参考
要覆盖默认入口点,请使用entrypoint
option。要传递参数,请使用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
我与jenkins ssh slave'jenkinsci / ssh-slave ' 面临相同的问题。但是,我的情况有点复杂,因为有必要传递包含空格的参数。我已经设法做到如下(dockerfile中的入口点是exec形式):
command: ["some argument with space which should be treated as one"]