文章列表
2 分钟阅读

Docker Compose 使用指南:管理多容器服务


系列:容器部署基础

第 3 / 10 篇

  1. Docker 安装与使用教程:从零部署第一个容器服务
  2. Dockerfile 入门:构建自己的应用镜像
  3. Docker Compose 使用指南:管理多容器服务
  4. Docker 数据卷与备份:数据库容器怎么保护数据
  5. Docker 网络与端口映射:容器之间怎么通信
  6. Docker 日志和排障:logs、exec、inspect、stats
  7. 用 Docker 部署一个 Python Web 项目
  8. Nginx 反向代理入门:静态文件、HTTPS 和 Web 服务转发
  9. HTTPS 和证书部署指南:Let’s Encrypt、Cloudflare、Nginx 怎么配
  10. Docker 生产环境部署注意事项:镜像、日志、数据卷和健康检查

一个真实服务通常不止一个容器:Web、数据库、Redis、Nginx。手动 docker run 会很快失控,Docker Compose 就是用一个文件管理这些容器。

compose.yml

一个 Compose 文件可以先写得很朴素:服务、端口、环境变量、数据卷。等项目稳定后,再补健康检查、资源限制和更多网络配置。

services:
web:
build: .
ports:
- "127.0.0.1:8000:8000"
env_file:
- .env
depends_on:
- db
db:
image: postgres:16
environment:
POSTGRES_PASSWORD: password
volumes:
- pgdata:/var/lib/postgresql/data
volumes:
pgdata:

启动:

Terminal window
docker compose up -d

这份配置里,Web 服务自己构建镜像,数据库直接使用官方镜像。数据库数据放进 volume,容器重建时数据不会跟着丢。

常用命令

日常维护基本围绕“看状态、看日志、重启、停止、更新”这几个动作,不需要一开始记很多参数。

Terminal window
docker compose ps
docker compose logs -f
docker compose restart web
docker compose down
docker compose pull

如果要重建镜像:

Terminal window
docker compose up -d --build

改了 Dockerfile 或依赖文件时才需要重建镜像;只改 Compose 配置,通常重新 up -d 就够了。

网络

Compose 里的服务默认可以用服务名互相访问。Web 连接数据库时,host 写 db,不是 127.0.0.1

常见问题

depends_on 只保证启动顺序,不保证数据库已经准备好。应用侧仍然要处理连接重试。

数据卷不要随便删。docker compose down -v 会删除 volume,数据库数据也会没。

总结

Compose 适合单机部署和本地开发,把多容器配置写成文件。先学 Dockerfile 入门:构建自己的应用镜像,再用 Compose 编排服务,会比手写一堆 docker run 稳。更多细节看 Docker Compose 文档