Docker Compose概述

预计阅读时间:6分钟

在寻找撰写文件参考吗? 在此处找到最新版本

Compose是用于定义和运行多容器Docker应用程序的工具。通过Compose,您可以使用YAML文件来配置应用程序的服务。然后,使用一个命令,就可以从配置中创建并启动所有服务。要了解有关Compose的所有功能的更多信息,请参阅功能列表

Compose可在所有环境中工作:生产,登台,开发,测试以及CI工作流。您可以在“通用用例”中了解有关每种用例的更多信息。

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

  1. 使用定义您的应用环境,Dockerfile以便可以在任何地方复制它。

  2. 定义组成应用程序的服务,docker-compose.yml 以便它们可以在隔离的环境中一起运行。

  3. 运行docker compose up,然后Docker compose命令启动并运行您的整个应用程序。您也可以docker-compose up使用docker-compose二进制文件运行。

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

version: "3.9"  # optional since v1.27.0
services:
  web:
    build: .
    ports:
      - "5000:5000"
    volumes:
      - .:/code
      - logvolume01:/var/log
    links:
      - redis
  redis:
    image: redis
volumes:
  logvolume01: {}

有关Compose文件的更多信息,请参见 Compose文件参考

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

  • 启动,停止和重建服务
  • 查看正在运行的服务的状态
  • 流运行服务的日志输出
  • 在服务上运行一次性命令

撰写文件

特征

使Compose有效的功能包括:

单个主机上的多个隔离环境

Compose使用项目名称将环境彼此隔离。您可以在几个不同的上下文中使用此项目名称:

  • 在开发主机上,以创建单个环境的多个副本,例如,当您要为项目的每个功能分支运行稳定副本时
  • 在CI服务器上,为了防止内部版本相互干扰,可以将项目名称设置为唯一的内部版本号
  • 在共享主机或开发主机上,以防止可能使用相同服务名称的不同项目相互干扰

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

默认项目目录是Compose文件的基本目录。可以使用--project-directory命令行选项定义其自定义值。

创建容器时保留卷数据

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

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

仅重新创建已更改的容器

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

变量和在环境之间移动构图

Compose支持Compose文件中的变量。您可以使用这些变量针对不同的环境或不同的用户自定义合成。有关更多详细信息,请参见变量替换

您可以使用该extends字段或通过创建多个Compose文件来扩展Compose文件。有关更多详细信息,请参见扩展

常见用例

Compose可以以多种不同方式使用。下面概述了一些常见的用例。

开发环境

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

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

这些功能一起为开发人员提供了一种上手项目的便捷方法。Compose可以将多页的“开发人员入门指南”简化为单个机器可读的Compose文件和一些命令。

自动化测试环境

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

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

单主机部署

传统上,Compose一直专注于开发和测试工作流,但是在每个版本中,我们都在面向生产的更多功能方面取得了进展。

有关使用面向生产的功能的详细信息,请参阅 本文档中的compose in production

发行说明

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

获得帮助

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

文档docsdockercompose编排容器