ishane.cn

了解Docker Compose文件(二)

2026/01/03
9
1

进阶配置

在实际的微服务架构中,仅仅控制启动顺序是不够的。如果数据库还在初始化,Web 服务强行启动就会报错。此时需要结合健康检查(healthcheck)与条件依赖:

services:
  mysql:
    image: mysql:8.0
    healthcheck:
      test: ["CMD", "mysqladmin", "ping", "-h", "localhost"]
      interval: 10s
      timeout: 5s
      retries: 5
      
  webapp:
    build: .
    depends_on:
      mysql:
        condition: service_healthy  # 只有当 mysql 健康时,webapp 才会启动

网络与数据卷的自定义

虽然 Compose 会自动为项目创建一个默认网络,但在复杂架构中,建议自定义网络以实现服务隔离。在 services 中,通过 networks: frontend, backend 将服务加入指定网络。同一网络下的服务可以通过服务名作为主机名直接相互访问。

networks:
  frontend:
    driver: bridge
  backend:
    driver: bridge

volumes:
  mysql_data:  # 声明一个命名卷,由 Docker 自动管理存储位置

常用管理命令速查

编写好 docker-compose.yml 后,在项目根目录下使用以下命令即可轻松管理整个集群:

  • 启动所有服务(后台运行):docker compose up -d
  • 重新构建并启动:docker compose up -d --build
  • 停止并删除所有容器和网络:docker compose down
  • 查看服务运行状态:docker compose ps
  • 实时查看所有服务日志:docker compose logs -f
  • 重启单个服务:docker compose restart api