使用docker

时间:2016-08-31 07:32:21

标签: docker dockerfile

我们一直在使用 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 进行此操作的最佳方式是什么?

3 个答案:

答案 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!

将配置文件与Dockerfilebuild 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的时候做了同样的事。