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

Pass command line arguments to Docker with Ansible

我有一个 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,但似乎都不是正确的方法。

在 Ansible 的 Docker module. See passing extra args to docker: task 中不支持传递任意参数。

你不能使用shell模块来实现你想要的吗?

如果您可以更改图像,我建议您改用 environment vars。 docker 模块支持。

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

您可以使用 command 参数传递参数:

docker_container:
    name: myredis
    image: redis
    command: redis-server --appendonly yes

或者您可以使用 entrypoint 参数重写现有入口点

docker_container:
    name: myjavascript
    image: theirjavascript
    entrypoint: ["node", "--max_old_space_size=4096", "dist/index.js", "start"]