---
title:
slug:
description:
creation: 2026-06-17
lastmod: " 2026-06-17"
image: cover.png
math:
license:
hidden: false
draft: false
categories:
tags:
  - docker
  - compose
  - 多容器
---

# Docker Compose 与多容器管理

## 为什么需要 Docker Compose

单容器应用很容易管理。但当应用需要数据库、消息队列、缓存等组件时，手动管理多个 `docker run` 命令变得困难：
- 需要运行多个命令（前端、后端、数据库），容易出错且耗时。
- 需要手动指定启动顺序和网络连接。
- 扩展服务时繁琐。
- 数据持久化配置分散。
- 环境变量设置麻烦。

**Docker Compose** 在一个名为 `compose.yml` 的 YAML 文件中定义整个多容器应用程序。

## Compose 文件示例

```yaml
services:
  app:
    image: docker/welcome-to-docker
    ports:
      - 8080:80
````

启动 Compose 应用：

```console
docker compose up -d --build
```

## 覆盖默认 CMD 和 ENTRYPOINT

```yaml
services:
  postgres:
    image: postgres
    entrypoint: ["docker-entrypoint.sh", "postgres"]
    command: ["-h", "localhost", "-p", "5432"]
    environment:
      POSTGRES_PASSWORD: secret
```

## 拆除 Compose 应用

```console
docker compose down
```

若要同时删除卷：

```console
docker compose down --volumes
```

有关基础镜像构建与数据持久化的更深入内容，请查阅 [镜像与容器](app://obsidian.md/%E9%95%9C%E5%83%8F%E4%B8%8E%E5%AE%B9%E5%99%A8) 和 [数据持久化](app://obsidian.md/%E6%95%B0%E6%8D%AE%E6%8C%81%E4%B9%85%E5%8C%96)。
