导入
使用 Compose 入门
了解一种不同的、更高级的工具,它使我们能够协调和管理构成应用程序的不同服务的容器。
Docker Compose
Docker Compose,或简称 Compose,是一个用于管理需要多个不同容器协同工作的应用程序的工具。Compose 是声明式的;你描述应用程序的各个部分,称为 service,而 Compose 会处理确保在需要时以正确的方式运行相应容器的繁琐工作。
它还能创建和销毁应用程序所需的资源。例如,它为你的应用程序创建一个独立的私有网络,为你提供一个可预测且隔离的环境。它在我们使用 Docker 部署和扩展应用程序方面也扮演着关键角色。
Compose 的设计面向开发者。它让我们能够以熟悉的概念与应用程序交互,例如“运行我们的 Web 服务”或“停止数据库”。这与我们之前看到的低级别的 docker run 命令形成鲜明对比,后者难以直观理解我们试图达成的目标。
不过,在让 Compose 执行我们的指令之前,我们首先必须通过创建一个 docker-compose.yml 文件来描述我们的应用程序。这并不会取代 Dockerfile 的需求——即创建容器的蓝图——但它描述了应用程序所需映像及其协同运行的方式。
创建 docker-compose.yml
以下是针对我们的 Rails 项目的一个初始 docker-compose.yml:
1version: '3' 2 services: 3 web: 4 build: . 5 ports: 6 - "3000:3000"
docker-compose.yml 解释
- 第 1 行: Compose 文件始终以
version号开头,用于指定所使用的文件格式。这有助于确保随着 Compose 新功能或破坏性变更的加入,应用程序仍能按预期运行。我们使用的是version3。 - 第 2 行: 接下来是一个名为
services的集合,用于分组应用程序的各个组成部分。 - 第 3 行: 目前,我们的 Rails 应用就是整个应用,因此我们声明了一个名为
web的单一服务来代表它。web下面是其各种配置选项。 - 第 4 行:
build: .告诉 Compose 在哪里找到应用来构建镜像的 Dockerfile。我们指定的路径相对于docker-compose.yml文件。在此情况下,它位于同一目录中。 - 第 5–6 行: 这等同于我们在
docker run命令中指定的-p 3000:3000选项。如果你还记得,这是用于将容器的端口 3000 映射到本地机器的端口 3000。此操作是使我们的 Rails 应用程序可以从本地机器访问所必需的。