专业的编程技术博客社区

网站首页 > 博客文章 正文

第 5 章:Docker Compose

baijin 2025-05-22 09:09:15 博客文章 1 ℃ 0 评论

## 5.1 Docker Compose 简介

Docker Compose 是一个用于定义和运行多容器 Docker 应用程序的强大工具。它允许开发人员在单个“docker-compose.yml”文件中描述整个应用程序堆栈,包括服务、网络和卷。只需一个命令,Docker Compose 就可以部署和管理整个应用程序堆栈。

### 5.1.1 Docker Compose 的主要特性

- **声明性语法:** 使用简单且人类可读的 YAML 文件定义服务、网络和卷。

- **服务扩展:** 轻松扩展或缩减服务以满足不断变化的需求。

- **环境变量和Secerts:** 使用环境变量配置服务并管理Secerts。

## 5.2 编写 Docker Compose 文件

Docker Compose 文件描述多容器应用程序的服务、网络和卷。让我们使用 Web 应用程序和数据库创建一个简单的示例。

### 5.2.1 演示:创建 Docker Compose 文件

1. 为您的项目创建一个新目录:

mkdir my-compose-app
cd my-compose-app

2. 创建一个包含以下内容的 `docker-compose.yml` 文件:

version: '3'
services:
  web:
    image: nginx:alpine
    ports:
      - "80:80"
  db:
    image: postgres:alpine
    environment:
      POSTGRES_PASSWORD: mysecretpassword

3. 运行应用程序堆栈:

docker-compose up -d

4. 访问 `http://localhost` 的 Web 服务器并验证正在运行的容器:

docker-compose ps

5. 停止并删除应用程序堆栈:

docker-compose down

## 5.3 使用 Docker Compose 进行编排

Docker Compose 不仅简化了多容器应用程序的部署,还支持整个堆栈的编排。它确保所有容器都以正确的顺序并使用必要的配置启动。

### 5.3.1 演示:具有依赖关系的编排

扩展前面的示例来展示 Docker Compose 如何编排依赖关系:

1. 修改 `docker-compose.yml` 文件以包含依赖项:

version: '3'
services:
  web:
    image: nginx:alpine
    ports:
      - "80:80"
    depends_on:
      - db
  db:
    image: postgres:alpine
    environment:
      POSTGRES_PASSWORD: mysecretpassword

2. 运行更新的应用程序堆栈:

docker-compose up -d

3. Docker Compose 确保仅在“db”服务启动并运行后才启动“web”服务。

## 5.4 环境变量和秘密

Docker Compose 允许您管理服务的环境变量,方便配置管理。此外,可以使用 Docker Compose 安全地管理机密。

### 5.4.1 演示:使用环境变量

1.修改`docker-compose.yml`文件以使用环境变量:

version: '3'
services:
  web:
    image: nginx:alpine
    ports:
      - "80:80"
    environment:
      DATABASE_URL: postgres://user:password@db:5432/mydatabase
  db:
    image: postgres:alpine
    environment:
      POSTGRES_USER: user
      POSTGRES_PASSWORD: password
      POSTGRES_DB: mydatabase

2. 运行更新的应用程序堆栈:

docker-compose up -d

3. `web` 服务现在可以使用指定的环境变量访问 `db` 服务。

Docker Compose 是一个非常有价值的工具,可以简化多容器应用程序的部署和编排。通过在单个文件中定义应用程序堆栈,您可以轻松管理复杂的设置、扩展服务并处理依赖项。在接下来的章节中,我们将探索更高级的 Docker 功能,包括 Docker Swarm 和 Kubernetes 等编排工具。

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表