Docker-compose包装允许用户数据和环境。是默认值
ruamel.dcw的Python项目详细描述
docker compose wrapper允许用户数据和env。变量默认值
dcw可以使用与 码头工人作曲。如果将-f/--file指定为第一个选项 将从参数中获取要读取的文件名。否则 docker-compose.yml是假定的(当前是可选的默认值 文件未测试/读取)yaml文件。
yaml文件必须采用版本:“2”格式。
dcw加载并处理yaml文件并调用 docker-compose--file=-和原始命令行参数, 然后在处理后的数据中进行管道传输(如yaml)。
使用中的示例是指实现smtp的容器 “过滤”,接收输入端口上的材料,过滤垃圾邮件和 病毒,并将邮件发送到中继进行传递。
版本
测试版本组合: -docker compose 1.8.1,dcw 0.5.0
处理
以下小节描述了dcw所做的处理 以及这样做的原因。
读取默认值
user-data->env-defaults下的键值对被接受 要填充^ {TT9}$,除非密钥已经存在。这意味着 您可以为 docker编写yaml文件。
对于smtp这允许您具有将在其上使用的特定端口 部署计算机在开发计算机上“后退” (如果需要在 测试)可以为端口号和 目录,覆盖yaml文件中的值。
剥离用户数据
任何现有的顶级密钥“用户数据”或从“用户数据”开始 远离的。这允许在文件中存储额外的数据 (这将需要另一个配置文件或提取 来自yaml评论)。
在dockerfile操作中包含默认值
env defaults中指定的所有环境变量都是 写入文件.dcw_env_vars.inc(如果yaml文件较新 比那个文件)。它们是用环境变量值编写的 如果可用,则使用 yaml文件。
文件如下:
export DOCKER_SMTP_HOST="some_host_name" export DOCKER_SMTP_DOMAIN="your_domain.com" export DOCKER_SMTP_RELAY="192.168.0.101"
此文件可以映射到dockerfile中,映射方式为:
ADD .dcw_env_vars.inc /tmp/env_vars.inc
然后在以后的(运行)节中的某些脚本中使用:
source /tmp/env_vars.inc
示例
这是我的docker-compose.yml文件的第一部分:
version: '2' user-data: author: Anthon van der Neut <a.van.der.neut@ruamel.eu> description: postfix container env-defaults: NAME: submission PORT: 587 # external port, overridden during development DOCKER_HOST_IP: <hostip services: submission: container_name: ${NAME} build: . extra_hosts: - docker-host:${DOCKER_HOST_IP} ports: - ${PORT}:587
“作者”和“描述”信息可以很容易地提取 被其他进程使用。
在开发时,我不能使用提交端口(587),因为它是 我已经拿到了,而且我的输出端口是10587。在我的部署计算机上 我不想把端口设置为默认值。使用dcw 港口环境。var设置为587,因为没有环境var“port” 在那台机器上定义的。
卷:目录与文件
如果您在主机上创建的卷还不存在,Docker将 创建一个目录,即使您可能更喜欢空文件。如果DCW发现卷列表的任何主机部分以 /(即在“:”之前有斜线)它将假定所有目录都有这样的斜线,并且 任何文件都不会有。根据每个主机的信息 将检查基于路径(如果不正确,则报告)并每个 将创建不存在的路径< /强>(即空目录或空) 文件,视情况而定)。
附加命令
包装器为docker compose添加了一些额外的命令
bash run bash in container generate generate systemd/upstart auto startup file templates list files used as template expand show expanded YAML and .dcw_env_vars.inc truncate truncate log file (needs sudo)
在2.0中限制日志大小
截短是相当残忍的。一个更好的限制输出的方法是 在Docker com中添加几行pose.yaml文件(在容器部分):
logging: # https://docs.docker.com/engine/admin/logging/overview/#/json-file-options driver: json-file options: max-size: 100k max-file: "10" # this is a number, has to be a string for Go
模板
templates和generate选项用于生成systemd/upstart模板。 模板被展开,并使用\将行长度限制一点。