PyentryPoint管理Docker容器中的入口点。

pyentrypoint的Python项目详细描述


#pyentrypoint

pyentrypoint是用"python"编写的管理docker容器"entrypoint"的工具。

>此工具避免将shell脚本写入:
-处理命令和子命令
-标识链接的容器
-使用"jinja2"模板生成配置
-在启动服务之前运行命令
-在配置更改时重新加载服务

[![文档状态](https://readthedocs.org/projects/pyentrypoint/badge/?版本=最新](http://pyentrypoint.readthedocs.io/en/latest/?徽章=最新的)[![构建状态](https://travis-ci.org/cmehay/pyentrypoint.svg?branch=master)(https://travis ci.org/cmehay/pyentrypoint)


\usages

\debian
安装git例如
运行apt get update&;apt get install git python pip-y
安装pyentrypoint
运行pip install pyentrypoint
在当前workdir中复制配置文件
复制entrypoint-config.yml.
设置entrypoint
entrypoint['pyentrypoint']
git将是默认命令
cmd['git']
`````

``dockerfile
from alpin
当前工作环境中的配置文件
copy entrypoint-config.yml.


set entrypoint
entrypoint['pyentrypoint']
git将是默认命令
cmd['git']
`` `


` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` `>


``````





提供多种口味的onbuild语句add entrypoint-config.yml在当前目录




-`goldy/pyentrypoint:python2`
-`goldy/pyentrypoint:python3`
-`goldy/pyentrypoint:python3`
-`goldy/pyentrypoint:python2 alpin2`
/pyentrypoint:python2 alpin2`
-`goldy/pyentrypoint:python2 alpin2`
-`goldy;世界特大示例
-[Tor Hidden Service](https://github.com/cmehay/docker-Tor Hidden Service)


\/>命令:git

命令。
可以是名称或uid/gid。
仅影响处理的命令。
默认情况下为dockerfile用户值。
用户:1000
组:1000

这些文件应该存在(添加或复制)
,并且应该是jinja模板。
注意:如果配置文件以".tpl"结尾,则扩展名为删除。
config_文件:
-/etc/gitconfig
-.ssh/config.tpl将应用于".ssh/config"
-/tmp/id_rsa:.ssh/id_rsa"




注意:如果容器链接到另一个容器,这些变量将传递给它验证链接
如果无法识别链接,则会引发错误
;使用Docker Network或Docker Compose v2时不支持此操作。
链接:
"ssh":
端口:22
名称:"ssh*"
协议:TCP
env可以是列表、字典或字符串
env:
foo:bar
此ID的多个链接默认为False
single:true
他的配置文件

进程
重新加载:
信号:sighup可选,要发送的信号,默认为sighup
PID:1可选,要发送信号的PID,默认为1
监视配置文件:true可选,监视定义的配置文件,默认为true
文件:可选,要监视的文件列表
-/etc/conf/to/watch
-/file/support/*.matching
错误:true

除了error
quiet:false
`````

配置模板

下面是一个假设ssh配置文件的示例:

``jinja
主机服务器:
主机名{{links.ssh.ip}
端口{{links.ssh.port}
```

模板将替换为标识链接的IP地址和端口。所有链接都可以从"links.all"访问,这是一个链接元组,您可以对它进行迭代。

``jinja
{%表示links.all%}
host{{link.names[0]}
hostname{link.ip}
port{links.port}
{%endfor%}
``

在entrypoint config.yml中,标识的链接ssh将成为链接的元组。必须在"jinja"模板中对其进行迭代。


``jinja
{%jinja
{%for link.ssh%}
host{{{link.name[0]}
hostname{{link.ip}
port{{{link.port}
{{%endfor%}
>{%endfor%}
>


>
>``jinja
>{%if'sshkey'sshkey在环境中的环境中对其进行访问。




>
````` jinja
>>"%}`````


可访问对象



>模板中有4个可用对象,模板中有4个可用对象。


-`config`
-`链接`
-`容器`
-`环境`
>-`yaml`
-`json `










<配置反映配置文件。您可以检索此对象中的任何设置。

(请参阅"config.py")


\您可以在配置文件中使用通配符模式标识链接。

`link`与一个物理链接(一个IP和一个端口)相关。

`link`处理以下属性:
-`IP`
-链接IP
-`port`
-链接端口(整数)
-`environ`
-相关容器环境
-`protocol`
-链接协议(`tcp`或`udp`)
-`uri`
-链接uri(例如:`tcp://10.0.0.3:80`)
-`names`
-相关容器名称的元组

-`containers

**Docker网络和Docker组件不支持SE v2**

"containers"处理"container"对象的元组。

"container"处理以下属性:
-`ip`
-container ip
-`environ`
-container environment
-`names`
-容器名称列表
-名称按长度排序,但容器id将是最后一个元素。
-`id`
-十六进制容器id(如果可用,则为空字符串else)
-`links`
-lin的元组与此容器相关的对象


35
‘environ’是容器(os.environ)的环境。

‘env’是"environ"的别名。



//[`JSON号`](https://docs.python.org/2/library/json.html)模块。

json存在于setup-json环境变量中
{%set data=json.loads(env['setup-json'])%}
{{data['param']}
````

setup



/>-` entrypoint_force"正在应用配置并运行pre-conf和post-conf命令,即使未处理所提供的"命令"。
-`entrypoint_preconf_command`在所有pre-conf命令之后运行额外的pre-conf shell命令。
-`entrypoint_postconf_command`运行额外的post-conf shell com在所有post conf命令后强制。
-`entrypoint_debug`启用调试日志。
-`entrypoint_raw`不使用日志记录来显示pre和post conf命令。
如果输出是序列化的,则这可能很有用。
-`entrypoint_disable_reload`即使在'ent中启用了重新加载系统,也禁用重新加载系统rypoint config.yml`.
-`entrypoint_user`覆盖配置中的'user'。
-`entrypoint_group`覆盖配置中的'group'。
-`entrypoint_disable_service`在执行任何操作之前退出包含0的容器。使用环境禁用容器很有用。




\```

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

推荐PyPI第三方库


热门话题
计算Java和C之间字符串差异的显示宽度#   java在不关闭连接的情况下通过ADB多次访问应用程序数据库?   java使用testNG使测试并行运行   使用正则表达式模式替换文本块(在java中)   为Shopify应用程序生成访问令牌时发生java错误   找不到请求操作的java编解码器:[varchar<>com.thelastpickle.tlpstress.PartitionKey]   java用不同的字符替换字符串中的所有字符   java返回结果集会减慢程序的运行速度   java JPA,打开JPA OneToMany FailedObject   java如何在ArrayList中访问对象集并获取方法?   java Struts2增加上一个集合的<s:set/>值   在引用Java中的函数后使用外部函数   java如何配置两个hazelcast缓存(即IMap),一个用于分布式缓存,另一个用于单实例缓存   调试查找在java应用程序中执行的方法