在前面的课程中,我们学习了如何使用 Docker 容器来运行单个服务。通过 docker run 命令,我们可以快速启动一个数据库、一个 Web 服务器或者一个缓存服务。这种方式在开发简单应用时非常有效。然而,随着应用架构的演进,微服务的理念逐渐流行,一个应用可能由多个相互依赖的服务组成。如果继续使用单容器管理方式,我们需要手动管理容器间的网络连接、存储卷映射、环境变量配置等,这不仅增加了运维的复杂度,还容易因手动操作而出错。
这就是为什么我们需要一个更高层次的工具来管理多容器应用。Docker Compose 应运而生,它通过一个声明式的 YAML 配置文件,帮助我们定义和管理多容器应用。通过 Docker Compose,我们可以用一个命令就完成整个应用的部署,而不需要手动管理每个容器。
Docker Compose 是一个用于定义和运行多容器 Docker 应用程序的工具。使用 Compose,你可以通过一个 YAML 文件来配置应用程序的所有服务,然后使用一个命令来创建和启动所有服务。
docker compose up: 创建和启动所有服务docker compose down: 停止和删除所有服务docker compose ps: 查看服务状态docker compose logs: 查看服务日志在本章节中,我们将创建一个完整的 Todo 应用,包含以下组件:
5_compose/ ├── docker-compose.yml # Compose 配置文件 ├── nginx/ # nginx ├── frontend/ # React 前端应用 ├── backend/ # Node.js 后端服务 └── INSTRUCTIONS.md # 项目说明
┌─────────────┐ │ Nginx │ │ :8080 │ └─────┬───────┘ │ ┌────────┴────────┐ │ │ ┌───────▼─────┐ ┌──────▼──────┐ │ Frontend │ │ Backend │ │ (React) │ │ (Node.js) │ │ :3000 │ │ :3001 │ └─────────────┘ └──────┬───────┘ │ ┌───────▼───────┐ │ MongoDB │ │ Database │ │ :27017 │ └───────────────┘
nginx 服务
frontend 服务
backend 服务
mongodb 服务
mongodb_data 持久化数据库数据在后台启动服务
docker compose up -d
查看服务状态
docker compose ps
查看服务日志
查看特定服务的日志: ```bash docker compose logs frontend docker compose logs backend docker compose logs mongodb
停止所有服务
docker compose down
重新构建服务
docker compose build
重启单个服务
docker compose restart frontend
我们使用了在 nginx 这里配置了 8080 端口作为 todo 应用的整体入口,在 cnb 上我们可以通过添加一个8080 的端口映射来实现外网访问, 可以按照如下步骤来配置。
点击这个浏览器图标,就可以访问 todo 应用了。