docker集装箱通信在开发机器上

我有一个容器,运行一个简单的服务,需要连接到elasticsearch。 为此我需要提供我的服务与elasticsearch的地址。 我很困惑如何创build一个可以在生产环境和我的本地机器上使用的容器(mac)。 人们最近如何提供这样的configuration?

到目前为止,我已经想出让我的过程以环境variables作为参数,我可以通过docker run -e将它传递给容器。 在生产中做这种事情似乎不太可能。

我有一个容器,运行一个简单的服务,需要连接到elasticsearch。 为此,我需要提供我的服务与elasticsearch的地址

如果elasticsearch在同一个主机上(由同一个docker守护进程pipe理)在自己的容器中docker run ,那么可以使用--link选项( 它设置环境variables )将其链接到自己的容器(在--link docker run阶段)

 docker run --link elasticsearch:elasticsearch --name <yourContainer> <yourImage> 

请参阅“ 将容器连接在一起 ”

在这种情况下,您的容器configuration可以是静态的,并且可以提前知道/写入,因为它将search机器称为“ elasticsearch ”。

把它写入你的应用程序的configuration文件,并用-v将configuration目录挂载到你的容器上?

为了使它更有组织,我使用Ansible进行编排。 通过这种方式,您可以为应用程序提供configuration文件的模板,而实际参数位于集中位置的相应Ansible playbook的variables文件中。 Ansible将负责将模板复制到所需位置,并为您进行variablesreplace。 它最近还增强了对Docker支持。

只要你使用的是服务名,而不是IP地址,环境variables就是绝对好的(我们一直都在使用它们)。 即使使用IP地址,只要您只有一个ES,并且您每次ES IP地址更改时都愿意重新启动服务,就不会有任何问题。

您应该真正地问一个确实知道在生产环境中如何解决这些问题的人,因为您不太可能成为组织中唯一存在此问题的人 – 连接到数据库也会带来同样的问题。

如果你没有任何限制,那么你应该检查一下像Hashicorp的领事 。 这个问题会帮助你很多。 如果你被允许使用它。