我使用这个映像:dperson/samba
图像正在定义它自己的入口点,我不想覆盖它。
我需要传递参数到入口点,简单的只有docker:
docker run ... dperson/samba arg1 arg2 arg3
但是如何使用docker_compose。yml吗?
现在我用的方法是:
command: samba.sh arg1 arg2 arg3
但是,当我强制重新定义入口点时,这并不令人满意。
我使用这个映像:dperson/samba
图像正在定义它自己的入口点,我不想覆盖它。
我需要传递参数到入口点,简单的只有docker:
docker run ... dperson/samba arg1 arg2 arg3
但是如何使用docker_compose。yml吗?
现在我用的方法是:
command: samba.sh arg1 arg2 arg3
但是,当我强制重新定义入口点时,这并不令人满意。
当前回答
我也面临着同样的问题与詹金斯ssh奴隶'jenkinsci/ssh-slave'。然而,我的情况有点复杂,因为必须传递一个包含空格的参数。我已经做到了如下所示(dockerfile中的入口点是exec形式):
command: ["some argument with space which should be treated as one"]
其他回答
我也面临着同样的问题与詹金斯ssh奴隶'jenkinsci/ssh-slave'。然而,我的情况有点复杂,因为必须传递一个包含空格的参数。我已经做到了如下所示(dockerfile中的入口点是exec形式):
command: ["some argument with space which should be treated as one"]
命令子句确实像@Karthik说的那样工作。
作为一个简单的例子,下面的服务在运行docker-compose up时将-inMemory添加到它的ENTRYPOINT中。
version: '2'
services:
local-dynamo:
build: local-dynamo
image: spud/dynamo
command: -inMemory
你可以像这样在命令字段中传递参数
command:
- arg1
- arg2
你可以使用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
docker-compose命令中指定的任何内容。如果入口点在Dockerfile中以exec形式定义,那么yml应该被追加到Dockerfile中定义的入口点:
入口点["可执行","param1", "param2"]
如果EntryPoint是以shell形式定义的(例如,EntryPoint可执行文件param1 param2),那么任何CMD参数都将被忽略。