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.1dcw 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

模板

templatesgenerate选项用于生成systemd/upstart模板。 模板被展开,并使用\将行长度限制一点。

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

推荐PyPI第三方库


热门话题
java为扫描器的输入生成字符序列   hibernate中的java实体合并   如何使变量在Java文件中成为全局变量   java JVM崩溃“异常访问冲突”   向MediaMetadataRetriever中的setDataSource()发送Uri时发生java IllegalArgumentException   java没有节约协议?   用户界面java gui帮助actionlistener   java索引越界异常,即使大小小于索引?   在C++中使用java的困惑   在普通java编码中插入图像   JDBC上的java缓存数据   在Java中,在字符串的特定位置替换子字符串   java在运行elasticsearch集群时遇到Perm Gen空间问题   java Soap故障跟踪   java拆分器。固定长度(int)。拆分(字符串)   java获取jar内部包的路径