在 Docker 的早期发展历程中,有一个名为 fig
的工具,它后来被重命名为 docker-compose
。fig
(或现在的 docker-compose
)是一个用于定义和运行多容器 Docker 应用的工具。通过一个 YAML 文件(默认为 docker-compose.yml
),开发者可以轻松地配置服务、网络和数据卷等,并一次性启动整个应用的所有相关组件。
使用 docker-compose
有以下优势:
-
简化开发环境搭建:通过一个配置文件,可以快速创建和管理多个相互依赖的服务容器,例如数据库、Web服务器、缓存服务等。
-
一致性与可重复性:
docker-compose.yml
文件确保了环境的一致性和可复现性,任何团队成员都可以根据该文件来重现相同的应用部署环境。 -
服务编排:自动处理容器之间的依赖关系,按照正确顺序启动和停止容器。
-
资源管理:可以定义容器间的数据卷共享,以及网络通信方式,如是否在同一桥接网络内进行通信。
-
命令行便利性:提供了一系列简洁易用的命令行工具,如
docker-compose up
启动所有服务,docker-compose down
停止并移除所有服务及关联资源。
实际操作时,docker-compose.yml
文件通常会包含如下部分:
- services: 定义每个服务容器的基本信息,包括镜像、端口映射、环境变量、依赖服务等。
- networks: 配置自定义网络,以便容器间相互通信。
- volumes: 指定持久化存储的数据卷。
举例来说,一个简单的 docker-compose.yml
示例可能如下所示:
version: '3'
services:
web:
build: .
ports:
- "8000:8000"
depends_on:
- db
db:
image: postgres:latest
environment:
POSTGRES_PASSWORD: example
networks:
default:
driver: bridge
在这个示例中,我们定义了一个基于当前目录构建的 web
服务,它监听宿主机的 8000 端口并将请求转发到容器内的 8000 端口,同时它依赖于 db
服务,这是一个基于 postgres:latest
镜像的 PostgreSQL 数据库服务。