用jinja2语法扩展dockerfiles到更棒的dockerfiles

docker-jinja的Python项目详细描述


Docker Jinja-dj
==jinja2语法和逻辑扩展DockerFiles。


用简单的数据源文件为Jinja创建新的过滤器和函数。


build status:[![构建状态](https://travis-ci.org/grokzen/docker-jinja.svg?branch=master)(https://travis-ci.org/grokzen/docker-jinja)[![覆盖状态](https://coveralls.io/repos/grokzen/docker jinja/badge.png)(https://coveralls.io/r/grokzen/docker jinja)




installation
----


install from pypi with`pip install docker jinja`

to install in development mode,首先导航到项目的根目录,然后运行"pip install-r dev-requirements.txt;pip install-e."。建议在virtualenv中安装,以避免与依赖项冲突。





Quickstart Guide
-------


创建一个dockerfile.jinja,其中包含所有常规dockerfile生成步骤和jinja语法。例如:

```
$cat dockerfile.jinja
来自{{os}
维护者{{mainter}

arg{{arg1}
```

运行"dj"命令。例如:

```
dj--dockerfile dockerfile.jinja--outfile dockerfile--env os=ubuntu:12.04--env mainter=grokzen--env arg1=foobar--config test config.json
`````

foobar
```



配置文件
----


可以创建带有设置的预定义配置文件,环境变量和数据源。

`dj`尝试按以下顺序加载以下配置文件:

-/etc/dj.yaml
-/etc/dj.json
-~/.dj.yaml
-/.dj.json
-$cwd+'.dj.yaml'
-$cwd+'.dj.json'

yaml是首选的文件格式,但是还支持json。

当前无法自动加载源dockerfile旁边的配置文件。





模式来帮助您。

datasource文件是一个python脚本,它可以包含您想要的任何代码,这样您就可以扩展"dj"来执行您想要的任何任务。

`字符串路径列表指向"dj"应该导入的所有文件。(必须是绝对路径)
-指向一个带有cli key-s/--datasource的文件,"dj"将加载该文件。(支持相对路径)
-将python文件添加到contrib文件夹中,在执行过程中自动加载该文件。






>全局函数
金贾。这些函数可用于执行所需的任何有用任务。

若要创建全局函数,请在数据源中定义一个方法,其名称应以"全局"开头,然后紧跟要在Dockerfile中使用的名称。

代码:

``python
def-global-foo():
return"bar"
`` ` ` ` `


您可以从金贾调用它:

` ` ` ` ` shell
`{{foo()}}` ` ` ` `{foo()}}` ` ` ` `
` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` `>
过滤器

>要创建一个新的过滤函数,您需要在数据源中定义一个方法,它的名称应该以` ` filter `开头,然后紧跟您要在Dockerfile中使用的名称。例如,如果您有一个在Dockerfile文件中使用的名称,那么您需要在数据源中定义一个方法,它的名称应该以` ` filter `开头,然后紧跟您要在Dockerfile中使用的名称。例如,如果您拥有了以下代码

`` python
def_过滤条(arg):
返回arg.upper()
```



````





其他渲染引擎
**-








因为jinja2只在python>;=3.3上受支持(参考:http://jinja.pocoo.org/docs/intro/)。如果支持其他渲染引擎,则这些引擎可以支持python 3.2。






contribution
----


>在github上打开一个问题,描述您遇到的问题。

打开你的修复公关。pr必须包含一些测试,以验证它是否工作,如果它是一个错误修复或新功能。所有受支持的python环境中的所有测试都必须在travisci上通过,然后才能接受pr。


(麻省理工学院)

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java如何将cassandra中的行数据转换为与列相关的嵌套json   java如何使用jcr XPath在jcr:content/@jcr:data中搜索?   java在使用openCV进行安卓开发时如何利用手机的广角镜头   java解析扩展了接口,结束了一个潜在的无限循环   位置服务的@Override方法中存在java Android应用程序错误   java本地线程的用途和需求是什么   具有左右子访问的java节点树遍历   java验证JsonWebToken签名   JUL日志处理程序中的java日志记录   嵌入式Java读取给定时间段的串行数据。   java有没有办法从多个URL获取多个图像?   java线程通过等待intent阻止自己发送intent   java Spring MVC解析多部分内容请求   java JPA/Hibernate静态元模型属性未填充NullPointerException   java格式错误的字符(需要引号,得到I)~正在处理   java为什么PrintWriter对象抛出FileNotFoundException?   java Neo4j未正确保存标签   java IE不加载图像