Compose是用来定义和运行多个容器docker应用程序的工具。可以使用一个compose文件来配置你的应用程序服务。然后使用一个命令根据配置文件来创建和启动所有的服务。
Compose非常适合用于开发,测试和临时环境,也包括CI工作流。
使用compose就三步。
1.使用Dockerfile定义应用程序的环境,以便可以在任何地方重建环境。
2.在docker-compose.yml定义服务构建你的应用程序,以便它们能在一个隔离的环境一起运行。
3.最后,执行docker-compose up然后compose会启动和运行整个app。
一个docker-compose.yml类似如下:
compose提供了管理应用程序整个生命周期的命令:
compose使用一个项目名称相互隔离环境。可以在几个不同的上下文使用这个项目名称:
默认项目名称是项目目录的basename。可以通过使用-p命令行选项或COMPOSE_PROJECT_NAME环境变量设置一个自定义项目名称。
compose保留用于服务的所有数据卷。当执行docker-compose up时,如果找到先前用到数据卷的容器,就把数据卷从旧的容器复制到新的容器。这样确保了你保存到数据卷的数据不会丢失。
compose缓存用于创建容器的配置。当重启一个没有更新的服务时,compose重用现有的容器。重用容器意味着你可以快速改变你的环境。
compose支持在compose文件中使用变量。可以使用这些变量为不同的环境或不同的用户自定义组件。
可以使用extends字段或通过创建多个compose文件扩展你的compose文件。
compose可以以许多不同的方式使用。一些常见的用例如下:
当正在开发一个软件时,能够在一个隔离的环境运行应用程序并与之交互很重要。compose命令行工具可以用来创建这样的环境并与之交互。
compose文件提供了一个方法来记录和配置所有的应用程序的服务依赖(数据库,队列,缓存,web服务API等)。使用这个compose命令行工具可以为每个依赖创建和启动一个或多个容器。
总之,这些功能为开发人员提供了一个方便的方法来开始项目。compose把很多页的开发人员入门指南减小到单个机器可读的compose文件和一些命令。
持续部署或持续集成的一个重要部分是自动测试套件。自动端到端测试依赖运行测试的环境。compose为你的测试套件提供了一个方便的方法来创建和销毁隔离的测试环境。通过在一个compose文件中定义完整的环境,只需要几个命令就可以创建和销毁这些环境。
compose传统上专注在开发和测试工作流上,不过目前每次发布compose都在使它能够在生产环境在使用有所进展。可以使用compose来部署到一个远程的docker engine。