教程 docker tutorial

多服务编排示例

Docker Compose 可以同时管理多个服务,实现完整应用环境的快速部署。本节以 Web、数据库和缓存服务为例,演示多服务编排。

1. 示例应用架构

  • Web 服务:使用 Nginx 提供静态页面
  • 应用服务:使用 Node.js 提供 API
  • 数据库服务:MySQL 数据库
  • 缓存服务:Redis

2. docker-compose.yml 示例

yaml
version: "3.9"

services:
  web:
    image: nginx:latest
    ports:
      - "8080:80"
    volumes:
      - ./html:/usr/share/nginx/html:ro
    networks:
      - appnet

  app:
    image: node:20
    working_dir: /app
    volumes:
      - ./app:/app
    command: "node server.js"
    depends_on:
      - db
      - redis
    networks:
      - appnet

  db:
    image: mysql:8
    environment:
      MYSQL_ROOT_PASSWORD: rootpassword
      MYSQL_DATABASE: mydb
    volumes:
      - db_data:/var/lib/mysql
    networks:
      - appnet

  redis:
    image: redis:7
    ports:
      - "6379:6379"
    networks:
      - appnet

networks:
  appnet:

volumes:
  db_data:

`

3. 启动与管理

  • 启动所有服务:
bash
docker-compose up -d
  • 查看日志:
bash
docker-compose logs -f
  • 停止并删除容器:
bash
docker-compose down

4. 特性说明

  • 依赖管理:depends_on 指定服务启动顺序
  • 共享网络:所有服务连接同一网络,容器间可通过服务名通信
  • 数据持久化:数据库使用命名卷存储数据
  • 服务隔离:每个服务运行在独立容器中,便于扩展和维护

通过该多服务示例,开发者可以快速理解 Docker Compose 的服务定义、依赖管理、网络配置与数据持久化方式,实现完整多容器应用部署。