从Ansible或Fig。的Docker运行中传递参数(如-Des.node.name =“TestNode”)

我需要使用dockerhub官方镜像中的dockerized Elasticsearch并使用Fig或Ansible启动Docker容器。 两者都可以select传递标准的docker run命令参数,如端口,卷等,但我找不到像-Des.node.name="TestNode"这样的参数来configurationElasticsearch集群名称等的方法。

我不能修改Dockerfile来修改configuration,因为它们是运行时configuration,在安装时不同,因此需要在运行时通过。

有没有人有任何想法如何使用无花果或Ansible通过这样的参数。

无花果已经被docker compose取代了相当长一段时间了。

而传递这样的参数的方式是:

  • 使用运行时环境variables ,这些variables在docker compose up之后将被容器运行可见,
  • CMD有一个起始脚本,它将预期并使用这些环境variables,以便构build启动ElsticSearch的正确命令(使用-Dxxx=yyy

由于-D特定于Java(JAVA_OPTS)而不是ENV或docker params,因此可以使用JAVA_OPTS环境variables传递。 喜欢:

sudo docker run -e JAVA_OPTS = -Des.script.groovy.sandbox.enabled = true -p 9200:9200 elasticsearch:1.7.1

现在Fig或Ansible可以通过ENVvariablesJAVA_OPTS。 唯一的目的是确保原始的JAVA_OPTS被保留。