2016-08-31 49 views
3

我們一直在使用ansible設立申請,但現在我們正在向泊塢窗,所以我有一個關於從模板而產生sphinx.conf(或任何文本文件)的問題。模板配置文件與碼頭工人

我有這樣的模板Jinja2的(在ansible支持):

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

而且locales變種是由locales: {"ru", "en", "de"}

定義所以,作爲一個結果,我有:

answers_ru 
answers_en 
answers_de 

現在的問題是:使用docker的最佳方法是什麼?

回答

1

找到了一個使用簡單的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 
0

使用Ansible!

將配置文件部署到您的Docker構建目錄以及Dockerfilebuild the image

- 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也可以得心應手。

0

你很可能想在啓動/運行期間(容器)生成/配置一些模板,而不是在構建過程中,例如,您的安裝/站點名稱和虛擬主機的數量只會有所不同,您需要爲同一堆棧上的每個不同站點構建一個新映像。

你可能想看看tiller這是一個docker模板系統,它支持文件(yml),環境,默認值和更復雜的KV對像consul/etcd這樣的不同值後端。

這就是你想要從真理中走出來的方式,我們從廚師來的時候也是這樣做的。