一、基于 yml 配置文件实现简单拓扑
基于存储卷和网络功能构建拓扑结构。
配置信息说明
-
Web 服务 (Nginx)
- 作用:作为网站服务器。
- 镜像:
nginx:latest - 端口映射:
8089:80,浏览器访问http://localhost:8089。 - 文件挂载:
./web:/usr/share/nginx/html,本地文件夹作为根目录。 - 依赖:需
redis和mysql启动成功后才启动。
-
MySQL 服务
- 作用:运行 MySQL 数据库。
- 镜像:
mysql:5.7 - 密码:root 用户密码为
root@123。 - 数据持久化:
./mysql:/var/lib/mysql,数据保存在本地目录。 - 健康检查:定期执行
SELECT 1;确认响应。
-
Redis 服务
- 作用:运行 Redis 缓存服务。
- 镜像:
redis:7 - 健康检查:通过
ping命令确认。
-
网络 (net1)
- 三个服务加入同一虚拟网络,可通过服务名互相访问。
验证与测试
- 检查配置格式无误。
- 按顺序启动(redis -> mysql -> web),容器连接正常。
- 查看网络详情,容器已连接至指定网络。
- 绑定卷目录同步完成。
- 访问 Nginx 时若发现内容缺失,通常因宿主机映射目录为空覆盖了容器默认内容,需确保宿主机目录有对应文件。
- 容器间可通过 curl 访问 Web 服务(默认 80 端口)。
- Redis 若无显式挂载,官方镜像默认声明匿名卷。
- 停止删除容器时,命名卷保留,匿名卷移除。
二、基于 nginx 实现代理访问 mysql 测试
架构说明
依赖关系:系统服务 -> MySQL -> Nginx。
服务定义
-
web - Nginx 网页服务器
- 端口:8765(对外)-> 80(容器内)
- 配置:本地
nginxconf文件夹 -> 容器配置目录 - 依赖:后端服务启动后才会启动
-
backend - 后端应用
- 代码:本地
app文件夹 -> 容器应用目录 - 依赖:数据库健康后才启动
- 代码:本地
-
mysql - 数据库
- 密码:root
- 数据持久化:本地
mysql文件夹保存数据 - 健康检查:自动检测数据库是否正常
启动流程
- 启动顺序:数据库 -> 后端 -> 前端
- 创建对应目录并传入 jar 包,运行 yml 文件。
- 反向代理初始化完成后启动成功。
- 清理容器后,绑定卷数据依然存在。
三、基于 docker compose 完成 WordPress 部署个人博客站点
使用 Docker Compose 快速部署包含 WordPress 和 MySQL 的完整个人博客站点。
核心组件
-
WordPress
- 开源内容管理系统 (CMS)。
- 集成 LAMP 环境(Linux, Apache, PHP, MySQL/MariaDB)。
- 优势:易用性高、生态丰富、社区活跃。
-
MySQL
- 关系型数据库管理系统 (RDBMS)。
- 存储文章、页面、评论等结构化数据。
- 使用数据卷持久化存储,防止容器重建导致数据丢失。
-
Docker Compose
- 定义多容器应用的命令行工具。
- 管理服务、网络、数据卷。
- 支持一键启停、环境隔离、版本控制。
部署步骤
- 获取镜像:从 Docker Hub 查找
wordpress和mysql镜像。 - 编写 yml 文件:
- services:定义
wordpress和db两个服务。 - wordpress 服务:
image: wordpressrestart: alwaysports: "8091:80"environment:设置WORDPRESS_DB_HOST,USER,PASSWORD,NAME。volumes:./wordpress/data:/var/www/html持久化网站文件。depends_on:等待db服务健康后启动。
- db 服务:
image: mysql:5.7environment:设置MYSQL_DATABASE,USER,PASSWORD,ROOT_PASSWORD。volumes:./db/data:/var/lib/mysql持久化数据库文件。healthcheck:定义健康检查命令及间隔。
- services:定义
- 启动服务:执行
docker-compose up -d。 - 访问测试:访问
http://IP:8091。 - 注册登录:在后台注册账号并登录。
- 内容发布:撰写并发布博客文章。
- 主题定制:修改主题样式和页面布局。
原理总结
- 先启动 MySQL 容器,WordPress 随后启动并使用预设凭据连接数据库。
- 容器间通过 Compose 内部网络通信。
- 数据卷确保宿主机上的文件不随容器销毁而丢失。
四、基于 docker compose 常见问题
-
up, run, start 命令的区别
up:核心命令,根据配置启动或重启整个服务栈。run:执行一次性任务,创建临时容器。start:仅重新启动已存在但停止的容器。
-
如何运行项目的多个副本
- 使用
-p参数或COMPOSE_PROJECT_NAME环境变量设置唯一项目名称,隔离资源。
- 使用
-
如何控制服务启动顺序
- 通过
depends_on声明依赖关系。 - 配合
healthcheck确保依赖服务准备就绪后再启动。
- 通过
五、本篇小结
通过三个实践案例,掌握用 Docker Compose 编排多容器应用,理解服务依赖、数据持久化、网络配置等要点,学会编写 yml 文件实现一键部署,解决容器启动、数据同步、访问等问题,提升容器化应用开发与运维能力。

