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.1,dcw 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
模板
使用templates和generate选项来生成systemd/upstart模板。模板被展开并使用`\`来略微限制行长度。
项目详情
下载文件
下载适合您平台的文件。如果您不确定要选择哪个,请了解更多关于安装包的信息。
源代码分发
构建分发
ruamel.dcw-0.5.0.tar.gz 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | f86be4da82c798dba7015d7d637084dd6495b9c532882a140c832ad14a59951b |
|
MD5 | c80537340de7d56ff477f530ad258d73 |
|
BLAKE2b-256 | 6ee33f48380b0c80658f1c0f96a97f2168890784243e1f5616fbbc5ec8d377ea |
ruamel.dcw-0.5.0-py2.py3-none-any.whl 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 3743ecac1b09f43d9b15bc47d3ede065b01dec20bd440461946c5e1146c3af32 |
|
MD5 | 0e274a447549df6477e001004d57b07f |
|
BLAKE2b-256 | 551d7c04d1057920f6f657f319d4bc7cb0b5d9460aebeeb8474d2a0c06f637f5 |