用docker模板configuration文件

我们一直在使用ansible来设置应用程序,但现在我们正在转向docker ,所以我有一个关于从模板生成sphinx.conf (或任何文本文件)的问题。

我为jinja2 (在ansible中支持)有这样的模板:

 {% for locale in locales %} answers_{{ locale }} {% endfor %} 

和由locales: {"ru", "en", "de"}定义的locales var locales: {"ru", "en", "de"}

所以我有这样的结果:

 answers_ru answers_en answers_de 

现在是这样的问题:使用docker做最好的方法是什么?

find一个简单的bash脚本的解决scheme,所以我甚至没有改变模板。

 #!/bin/sh cat > /etc/sphinxsearch/sphinx.conf for LOCALE in ru en de ; do sed "s/{{ locale }}/${LOCALE}/g" ./template/index.conf.template >> /etc/sphinxsearch/sphinx.conf done 

使用Ansible!

将configuration文件与Dockerfile一起部署到您的Docker构build目录中并构build映像 。

 - template: | src=sphinx.j2 dest=./myimage/sphinx.conf owner=bin group=wheel mode="u=rw,g=r,o=r" - name: Build an image and tag it docker_image: path: ./myimage name: myimage tag: latest 

Ansiblepipe理的Dockerfiles也可以很方便。

你最有可能想在启动/运行时(容器)生成/configuration一些模板,而不是在构build期间,因为例如你的安装/网站名称和虚拟主机的数量只会有所不同,你需要为每个不同的站点build立一个新的图像同样的堆栈。

你可能想看看tiller这个docker的模板系统,它支持文件(yml),环境,默认值和更复杂的KV对(比如consul / etcd)。

这是你想要从真理中走出来的方式,我们也是从厨师那里来的。