[译]Docker Compose概述¶
原文地址:Overview of Docker Compose
Compose
是一个定义和运行多容器的Docker
工具。对于Compose
而言,通过YAML
文件配置应用程序,然后使用一个命令即可根据配置文件创建并启动所有服务。更多有关Compose
的特性可查看the list of features
可以在所有环境中撰写Compose
:生产(producing
)、准备(staging
)、开发(testing
)、测试以及CI
工作流。更多用例在Common Use Case
Compose
使用通常分为以下3
个步骤:
- 使用
Dockerfile
定义应用程序的环境,以便可以在任何地方复用 - 在
docker-compose.yml
中定义组成应用程序的服务,以便它们可以在独立的环境中一起运行 - 运行命令
docker-compose up
,启动Compose
并运行整个应用程序
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 file reference
Compose
有用于管理应用程序整个生命周期的命令:
- 开始,停止和重建服务
- 查看运行服务的状态
- 流式处理正在运行的服务的日志输出
- 对服务运行一次性命令
Compose文档¶
- Installing Compose
- Getting Started
- Get started with Django
- Get started with Rails
- Get started with WordPress
- Frequently asked questions
- Command line reference
- Compose file reference
- Features
特性¶
Compose
特性有:
单个主机上的多个隔离环境¶
Compose
使用工程名(project name
)将环境彼此隔离。可以在几个不同的上下文中使用这个工程名:
- 在开发主机上创建单个环境的多个副本,例如当希望为项目的每个特征分支运行一个稳定的副本时
- 在
CI
服务器上,为了避免生成相互干扰,可以将项目名称设置为唯一的生成号 - 在共享主机或开发主机上,以防止可能使用相同服务名称的不同项目相互干扰
默认工程名是工程目录的基名。可以使用-p命令行选项或COMPOSE_PROJECT_NAME环境变量设置自定义工程名
创建容器时保留卷数据¶
Compose
保留服务使用的所有卷。运行docker-compose up
时,如果发现以前运行的任何容器,它会将卷从旧容器复制到新容器。此过程确保在卷中创建的任何数据不会丢失
如果在Windows
机器上使用docker compose
,参考环境变量,并根据特定需要调整必要的环境变量
仅重新创建已更改的容器¶
Compose
缓存用于创建容器的配置。当重新启动未更改的服务时,Compose
重用现有的容器。重用容器意味着可以很快地对环境进行更改
变量和在环境之间移动组合¶
Compose
支持Compose
文件中的变量。可以使用这些变量为不同的环境或不同的用户自定义组合。参考Variable substitution
常用示例¶
Compose
可以有很多不同的方法。下面概述一些常见的用例
开发环境¶
在开发软件时,在独立环境中运行应用程序并与其交互的能力至关重要。Compose
命令行工具可用于创建环境并与其交互
Compose文件提供了一种方法来记录和配置所有应用程序的服务依赖关系(数据库、队列、缓存、Web
服务API
等)。使用Compose
命令行工具,可以使用一个命令(docker-compose up
)为每个依赖项创建和启动一个或多个容器
这些特性共同为开发人员启动项目提供了一种便捷的方式。Compose
可以减少多页开发者入门指南
到一个机器可读的Compose
文件和一些命令
自动化测试环境¶
任何持续部署或持续集成过程的一个重要部分是自动化测试套件。自动化的端到端测试需要一个运行测试的环境。Compose
为测试套件创建和销毁隔离测试环境提供了一种便捷的方法。通过在Compose文件中定义完整的环境,可以使用几个命令创建和销毁这些环境:
$ docker-compose up -d
$ ./run_tests
$ docker-compose down
单主机部署¶
Compose
传统上一直专注于开发和测试工作流程,但随着每个版本,我们正在取得更多的生产为导向的特点。可以使用Compose
部署到远程docker
引擎。Docker
引擎可以是由Docker Machine提供的单个实例,也可以是整个Docker Swarm集群
有关使用面向生产的功能的详细信息,参考本文档中的compose in production
版本说明¶
要查看Docker Compose
的过去和当前版本的详细更改列表,参考CHANGELOG
求助¶
Docker Compose
正在积极开发中。如果需要帮助,想投稿,或者只想和志趣相投的人谈谈项目,我们就有一些开放的渠道进行沟通
- 报告错误或文件功能请求,请使用issue tracker on Github
- 与人实时地讨论项目:加入
freenode IRC
上的#docker-compose
频道 - 提交代码或文档更改:在
GITHUB
上提交一个pull request
有关更多信息和资源,访问Getting Help project page