我用这个图片:dperson/samba
图像定义了它自己的入口点,我不想覆盖它.
我需要将参数传递给入口点,只需使用docker即可:
docker run ... dperson/samba arg1 arg2 arg3
Run Code Online (Sandbox Code Playgroud)
但是如何用docker_compose.yml做呢?
现在我用作解决方法:
command: samba.sh arg1 arg2 arg3
Run Code Online (Sandbox Code Playgroud)
但是当我强行重新定义入口点时,它并不令人满意.
小智 103
该command条款确实有效,正如@Karthik上面所述.
举一个简单的例子,以下服务将在运行时-inMemory添加.ENTRYPOINTdocker-compose up
version: '2'
services:
local-dynamo:
build: local-dynamo
image: spud/dynamo
command: -inMemory
Run Code Online (Sandbox Code Playgroud)
Kar*_*hik 43
无论在commanddocker-compose.yml中指定的是什么,都应该附加到entrypointDockerfile中定义的,前提entrypoint是在Dockerfile中以exec形式定义.
如果EntryPoint以shell形式定义,则将忽略任何CMD参数.
afa*_*dge 23
您可以在最后使用docker-compose run而不是docker-compose up并添加参数.例如:
docker-compose run dperson/samba arg1 arg2 arg3
Run Code Online (Sandbox Code Playgroud)
如果需要连接到其他docker容器,请使用以下--service-ports选项:
docker-compose run --service-ports dperson/samba arg1 arg2 arg3
Run Code Online (Sandbox Code Playgroud)
小智 9
我遇到了与jenkins ssh slave'jenkinsci/ssh-slave ' 相同的问题,但是我的情况有点复杂,因为有必要传递一个包含空格的参数.我设法像下面这样做(dockerfile中的入口点是exec形式):
command: ["some argument with space which should be treated as one"]
Run Code Online (Sandbox Code Playgroud)
希望这可以帮助.谢谢.
要覆盖默认入口点,请使用entrypointoption。要传递参数,请使用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
Run Code Online (Sandbox Code Playgroud)
这是输出:
$ 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
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
88256 次 |
| 最近记录: |