补充工具
项目描述
一组用于补充docker-compose已提供功能的命令行工具。这些工具通常关注开发或测试环境用例。
安装
当前唯一的安装选项是pip
pip install compose-addons
dcao-include
给定一个docker-compose.yml文件,获取包含部分中的每个配置并将其合并到基本docker-compose.yml中。如果包含文件中有包含部分,则继续获取和合并每个文件,直到没有更多文件要包含。
用例
如果您有一个以服务为导向的架构,其中每个服务都开发并部署在独立的代码库中,并且每个服务都有自己的docker-compose.yml。当您想为单个服务创建完整的测试或开发环境时,需要包含所有下游服务。您不必复制每个下游服务的拓扑结构,可以包含下游服务的docker-compose.yml。通过包含(而不是复制)此拓扑,您可以在单个位置更改依赖关系,而无需担心破坏依赖服务的测试套件。
如果你的组件范围根据你所执行的任务而变化。你的应用程序可能有一个始终运行的“核心”服务集合,以及一些临时的或管理服务,这些服务只在某些时候运行。你可以将你的组件拆分为两个(或更多)文件。核心的 docker-compose.yml 文件将只包含核心服务。而 compose-admin.yml 文件将包括 docker-compose.yml,并添加额外的服务,这些服务可以链接到或使用核心服务中的卷,而无需重复任何服务配置。
如果你的组件根据环境(开发 vs 生产)而变化。与上面情况类似,核心的 docker-compose.yml 文件对所有环境都保持不变,但 docker-compose-dev.yml 文件可以包括“核心”服务,并添加数据库或代理等额外服务。
与包含文件一起工作
dcao-include 的工作方式与 docker-compose 配置有所不同
一个可选的顶级 include 键,其中包含一个 URL 列表(这些 URL 可能是本地文件路径、http(s) URL 或 s3 路径)
一个必需的顶级 namespace 键,它由配置用于链接到包含文件中的服务。例如,如果配置包括具有 namespace 为 servicea 的 http://example.com/compositions/servicea.yaml,则 servicea.yaml 中的所有“公共”服务应以 servicea. 开头。
由于配置可以来自远程 URL 或不同的目录,因此配置不应包含任何依赖于主机的元素。任何服务中都不应包含 build 键,也不应包含主机卷。
示例
一个包含包含示例的组件文件
include:
- http://example.com/compositions/servicea.yaml
- http://example.com/compositions/serviceb.yaml
namespace: core
web:
image: example/service_a:latest
links: ['servicea.web', 'serviceb.api']
servicea.yaml 可能看起来像这样
namespace: servicea
servicea.web:
image: services/a:latest
serviceb.yaml 可能看起来像这样
namespace: serviceb
serviceb.api:
image: services/b:latest
用法
要使用 dcao-include 与 docker-compose,您有几个选项
通过管道使用它以 stdin
dcao-include compose-with-includes.yml | docker-compose -f - up -d
使用一次以生成新文件
dcao-include -o docker-compose.yml compose-with-includes.yml
docker-compose up -d
docker-compose ps
dcao-namespace
给定一个标准的 docker-compose.yml 文件,添加一个命名空间键,并使用该命名空间前缀所有服务名称实例。此命令用于将标准 docker-compose.yml 文件准备为 dcao-include 的包含文件。这可以被认为是将组合文件包含在其他项目之前所需的“导出”步骤。
示例
给定一个 docker-compose.yml
web:
image: example.com/web:latest
links: ['db']
volumes_from: ['configs']
db:
image: example.com/db:latest
configs:
image: example.com/configs:latest
运行 dcao-namespace docker-compose.yml myservice 将产生
namespace: myservice
myservice.web:
image: example.com/web:latest
links: ['myservice.db:db']
volumes_from: ['myservice.configs']
myservice.db:
image: example.com/db:latest
myservice.configs:
image: example.com/configs:latest
用法
首先生成命名空间配置
dcao-namespace -o myservice.yml docker-compose.yml myservice
接下来,你希望使 myservice.yml 可用于其他服务。在此示例中,我们将假设我们正在使用 s3 存储桶
aws s3 cp myservice.yml s3://some-bucket/compose-registry/myservice.yml
现在我们可以将此配置作为另一个服务中的包含文件使用。在不同的服务 compose-with-includes.yml(将由 dcao-include 消费)中
include:
- s3://some-bucket/compose-registry/myservice.yml
dcao-merge
通过覆盖基本配置中的值以其他文件中的值来合并 docker-compose.yml 配置文件中的值。它用于转换配置,而无需复制应保持一致的字段。
用例
在开发过程中,您可能希望使用卷来加速迭代,但在CI上进行测试时,您希望将源代码包含在容器中使用 ADD(或 COPY)。您可以使用 overrides-dev.yml 来添加卷到配置中,并在CI期间跳过此步骤。
如果组合运行在共享主机上,每个开发人员都需要使用不同的主机端口。这种变化可以包含在每个开发人员在版本控制之外维护的文件中。
如果 docker-compose.yml 包含用于本地开发的 build 指令,但在其他环境(测试、预发布、生产等)需要 image 指令,则可以使用合并来将 build 重写为带有正确图像标签的 image。
用法
将配置重写为使用图像而不是构建,并删除任何主机特定配置
dcao-merge -o export.yml docker-compose.yml compose-overrides.yml
其中 docker-compose.yml 是
web:
build: .
links: ['db']
volumes: ['./logs:/app/logs']
db:
build: database/
以及 compose-overrides.yml
web:
image: example.com/web:latest
volumes: []
db:
image: example.com/db:latest
将生成 export.yml
web:
image: example.com/web:latest
links: ['db']
volumes: []
db:
image: example.com/db:latest
项目详细信息
compose-addons-0.2.1.tar.gz 的散列值
算法 | 散列摘要 | |
---|---|---|
SHA256 | 946a3eeae4e812dcc5d5c0e32b8546885e38f97828fc0ab1c4990700acd0a6f4 |
|
MD5 | e6c6f0eabdeb6794ffbb612e0e288505 |
|
BLAKE2b-256 | b7c3dfa4412549cc9da0e417effde648fb5045f7f47772e2cf96afb646bb2f1b |