跳转到主要内容

补充工具

项目描述

一组用于补充docker-compose已提供功能的命令行工具。这些工具通常关注开发或测试环境用例。

Latest PyPI version Travis CI

安装

当前唯一的安装选项是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 键,它由配置用于链接到包含文件中的服务。例如,如果配置包括具有 namespaceserviceahttp://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-includedocker-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 (6.8 kB 查看散列值)

上传时间

由以下组织支持

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF 赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误日志 StatusPage StatusPage 状态页面