在线文档教程
Docker 17
撰写 | Compose

Docker Compose总览 | Overview of Docker Compose

Docker Compose概述

Looking for Compose file reference? Find the latest version here.

Compose是定义和运行多容器Docker应用程序的工具。使用Compose,您可以使用Compose文件来配置应用程序的服务。然后,使用单个命令创建并启动配置中的所有服务。要详细了解Compose的所有功能,请参阅功能列表。

Compose非常适合开发,测试和分段环境以及CI工作流程。您可以了解有关常见使用案例中每个案例的更多信息。

使用Compose基本上是一个三步过程。

  • 用一个定义你的应用程序的环境,Dockerfile这样它就可以在任何地方再现。

docker-compose.yml看起来像这样:

version: '3' services: web: build: . ports: - "5000:5000" volumes: - .:/code - logvolume01:/var/log links: - redis redis: image: redis volumes: logvolume01: {}

有关撰写文件的更多信息,请参阅撰写文件参考。

Compose具有管理应用程序整个生命周期的命令:

  • 开始,停止并重建服务

撰写文件

  • 安装Compose

特征

使其有效的Compose功能包括:

  • 单个主机上有多个独立的环境

单个主机上有多个独立的环境

撰写使用项目名称来隔离彼此的环境。您可以在多个不同的环境中使用此项目名称:

  • 在开发主机上创建单个环境的多个副本(例如,您希望为项目的每个功能分支运行稳定副本)

默认项目名称是项目目录的基本名称。您可以使用-p命令行选项或COMPOSE_PROJECT_NAME环境变量设置自定义项目名称。

创建容器时保留卷数据

撰写会保留您的服务使用的所有卷。当docker-compose up运行时,如果发现任何集装箱从之前的运行,它会将从旧容器到新容器的体积。此过程可确保您在卷中创建的任何数据都不会丢失。

如果您docker-compose在Windows机器上使用,请参阅环境变量并根据您的特定需求调整必要的环境变量。

只重新创建已更改的容器

组合缓存用于创建容器的配置。当您重新启动未更改的服务时,Compose将重新使用现有的容器。重复使用容器意味着您可以快速更改环境。

变量并在环境之间移动合成

Compose支持Compose文件中的变量。您可以使用这些变量为不同的环境或不同的用户自定义组合。有关更多详情,请参阅变量替换

您可以使用该extends字段或通过创建多个撰写文件来扩展撰写文件。请参阅延伸了解更多细节。

常见用例

撰写可用于许多不同的方式。下面概述了一些常见用例。

开发环境

在开发软件时,在孤立环境中运行应用程序并与其交互的能力至关重要。Compose命令行工具可用于创建环境并与之交互。

Compose文件提供了一种方式来记录和配置所有应用程序的服务依赖关系(数据库,队列,缓存,Web服务API等)。使用Compose命令行工具,您可以使用单个命令(docker-compose up)为每个依赖项创建和启动一个或多个容器。

总之,这些功能为开发人员开始项目提供了一种便捷方式。撰写可以减少多页“开发人员入门指南”到一个机器可读的Compose文件和一些命令。

自动化测试环境

任何持续部署或持续集成过程的一个重要部分是自动化测试套件。自动化的端到端测试需要一个运行测试的环境。Compose提供了一种创建和销毁测试套件的独立测试环境的便捷方式。通过在Compose文件中定义完整的环境,您可以通过几条命令创建和销毁这些环境:

$ docker-compose up -d $ ./run_tests $ docker-compose down

单个主机部署

撰写传统上一直专注于开发和测试工作流程,但每次发布我们都在更多面向生产的功能方面取得进展。您可以使用Compose部署到远程Docker引擎。Docker引擎可以是配备Docker Machine或整个Docker Swarm集群的单个实例。

有关使用面向生产功能的详细信息,请参阅本文档中的制作。

发行说明

要查看过去和当前版本的Docker Compose变更的详细列表,请参阅CHANGELOG

获得帮助

Docker Compose正在积极开发中。如果您需要帮助,想要贡献,或者只是想与志趣相投的人讨论这个项目,我们有许多开放的沟通渠道。

有关更多信息和资源,请访问Getting Help项目页面

documentation, docs, docker, compose, orchestration, containers