跳转到主要内容

docker-compose封装器,允许用户数据和默认环境变量

项目描述

docker-compose封装器,允许用户数据和默认环境变量

dcw 可以使用与 docker-compose 完全相同的命令进行调用。如果 -f/--file 被指定为第一个选项,要读取的文件名将从参数中获取。否则假设 docker-compose.yml 是YAML文件(目前尚未测试/读取其他默认文件)。

YAML文件必须以版本:“2”的格式。

dcw 加载并处理YAML文件,调用 docker-compose --file=- 和原始命令行参数,然后通过管道传入处理后的数据(作为YAML)。

使用说明中的示例涉及一个名为 smtp 的容器,它实现了一个SMTP“过滤器”,接受输入端口上的材料,过滤垃圾邮件和病毒,并将邮件发送到中继进行投递。

版本

已测试的版本组合:- docker-compose 1.8.1dcw 0.5.0

处理

以下小节描述了 dcw 执行的处理以及这样做的原因。

读取默认值

user-data -> env-defaults 下的键值对用于填充 os.environ,除非键已经存在。这意味着您可以为在docker-compose YAML文件中使用的环境变量设置默认值。

对于smtp,这允许你在部署机器上指定将使用的特定端口“备选”,而在开发机器(测试期间需要不间断的“正常”邮件)上,可以设置一些环境变量,用于端口号和目录,以覆盖YAML文件中的值。

删除用户数据

任何现有的顶级键“user-data”或以“user-data-”开头都将被删除。这允许在文件中存储额外的数据(这需要另一个配置文件或从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

然后在后面的(RUN)段中使用某些脚本进行使用

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),因为这已经被占用,所以我那里使用export PORT=10587。在我的部署机器上,我不想将PORT设置为默认值。使用dcw,PORT环境变量被设置为587,因为在该机器上没有定义“PORT”环境变量。

卷:目录与文件

如果你创建的卷在主机上尚不存在,Docker将创建一个目录,即使你可能更喜欢一个空文件。

如果dcw发现volumes列表中的主机部分以/结尾(即,在“:”之前有一个斜杠),它将假设所有目录都有这样的斜杠,而任何文件都不会有。根据这个信息,将检查每个基于主机的路径(如果有错误,将报告),并且会为每个不存在的路径创建(即,空目录或空文件,视情况而定)。

额外命令

包装器向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-compose.yaml文件中(容器部分)添加几行

logging:   # https://docs.docker.net.cn/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模板。模板被展开并使用`\`来略微限制行长度。

项目详情


下载文件

下载适合您平台的文件。如果您不确定要选择哪个,请了解更多关于安装包的信息。

源代码分发

ruamel.dcw-0.5.0.tar.gz (21.4 kB 查看散列)

上传时间 源代码

构建分发

ruamel.dcw-0.5.0-py2.py3-none-any.whl (17.2 kB 查看哈希值)

上传时间 Python 2 Python 3

由以下支持