如何在docker-compose.yml中将参数传递给入口点

时间:2016-05-21 18:53:15

标签: docker-compose

我用这个图片:dperson / samba

图像定义了它自己的入口点,我不想覆盖它。

我需要将参数传递给入口点,只需使用docker即可:

docker run ... dperson/samba arg1 arg2 arg3

但是如何使用docker_compose.yml?

现在我用作解决方法:

command: samba.sh arg1 arg2 arg3

但是当我强制重新定义入口点时,它并不令人满意。

5 个答案:

答案 0 :(得分:86)

command条款确实有效,正如@Karthik所说。

举一个简单的例子,当-inMemory运行时,以下服务会在ENTRYPOINT添加docker-compose up

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

答案 1 :(得分:35)

在docker-compose.yml中的(function () { 'use strict'; angular .module('app.pages.auth.verify-mobile') .controller('VerifyMobileController', VerifyMobileController); /** @ngInject */ function VerifyMobileController(dataservice) { var data = dataservice.getData(); alert(data); } })(); 中指定的内容应该附加到Dockerfile中定义的command,前提是在Dockerfile中以exec格式定义了entrypoint。 / p>

如果以shell形式定义EntryPoint,则将忽略任何CMD参数。

答案 2 :(得分:18)

您可以使用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

答案 3 :(得分:7)

我遇到了与jenkins ssh slave'jenkinsci/ssh-slave'相同的问题,但是我的情况有点复杂,因为必须传递一个包含空格的参数。我已经设法像下面这样做了(dockerfile中的入口点是以exec形式):

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

希望这会有所帮助。 感谢。

答案 4 :(得分:2)

要覆盖默认入口点,请使用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