我们一直在使用 ansible 来设置应用,但现在我们要转移到 docker ,所以我对生成sphinx.conf
有疑问(或任何文本文件)来自模板。
我有 jinja2 这样的模板( ansible 支持):
{% for locale in locales %}
answers_{{ locale }}
{% endfor %}
由locales
locales: {"ru", "en", "de"}
var
所以我得到了结果:
answers_ru
answers_en
answers_de
现在的问题是:使用 docker 进行此操作的最佳方式是什么?
答案 0 :(得分:3)
使用简单的bash脚本找到解决方案,所以我甚至没有改变模板。
#!/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
答案 1 :(得分:0)
使用Ansible!
将配置文件与Dockerfile
和build the image一起部署到Docker构建目录中。
- 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
Ansible托管的Dockerfiles也很方便。
答案 2 :(得分:0)
您很可能希望在启动/运行时(容器)期间不在构建期间生成/配置某些模板,例如,您的安装/站点名称和vhost的数量只会有所不同,您需要为同一堆栈上的每个不同站点构建一个新映像。
您可能希望查看tiller这是一个模板系统,用于支持不同的值后端,如文件(yml),环境,默认值,然后是更复杂的KV对,如consul / etcd。
这更像是你想从ansible那里得到的方式,我们在来自Chef的时候做了同样的事。