使用Ansible将命令行参数传递给Docker

时间:2016-02-21 18:23:41

标签: docker ansible devops

我有一个Java套接字应用程序,需要端口号作为CLI参数。在我的本地机器上,我可以通过以下方式运行它:

docker run -d -p 1111:1111 --name <name> --link <link> <foo>/<bar> 1111

问题是我在使用Ansible时没有找到传递端口号的解决方案(我有一个拉动图像的不同任务)。当前任务:

- name: Run server
      docker:
          name: <name>
          image: <foo>/<bar>
          state: reloaded
          ports:
              - "1111:1111"
          links:
              - "<link>"

有没有办法将端口作为CLI参数传递?或者有一个简单的方法来解决这个问题?我想上传新图片或使用the command module,但似乎都不是正确的方法。

2 个答案:

答案 0 :(得分:5)

在Ansible的Docker模块中传递任意参数没有原生支持。见passing extra args to docker: task

您是否可以使用shell模块来实现您的目标?

答案 1 :(得分:2)

如果您可以更改图片,我建议改用environment vars。这是由docker模块支持的。

- name: Run server
  docker:
    name: <name>
    image: <foo>/<bar>
    state: reloaded
    ports:
      - "1111:1111"
    links:
      - "<link>"
    env:
      MY_PORT: 1111