Engineering Portfolio
Docker + MySQL 可复现实验环境
为数据库与 Web 实验建立可启动、可检查、可备份、可恢复的容器化环境模板。
项目背景
数据库实验最容易因版本、端口、初始化顺序和数据卷状态产生“只在某台电脑能运行”的问题。这个项目专门记录可复现环境的边界与检查方式。
功能目标
- 使用 Compose 声明应用与 MySQL 服务。
- 通过健康检查控制启动顺序。
- 将配置、敏感信息和持久化数据分离。
- 提供备份、恢复和故障排查步骤。
硬件与软件环境
- Windows + Docker Desktop 或 Linux + Docker Engine。
- Docker Compose、MySQL 8.0 与轻量 Web 应用。
系统架构
应用和数据库位于独立容器,通过内部网络通信;数据库数据使用命名卷;初始化 SQL 只在新数据卷上执行;主机仅暴露必要端口。
实现步骤
- 固定镜像版本和端口边界。
- 编写数据库健康检查与应用依赖条件。
- 增加
.env.example和最小配置说明。 - 验证全新启动、保留数据重启和完整恢复。
- 记录非 Docker 本地运行的等价路径。
核心代码说明
健康检查必须验证数据库真正可接受连接,而不是只检查容器进程存在。应用连接使用服务名,不写死主机 IP。
healthcheck:
test: ["CMD", "mysqladmin", "ping", "-h", "localhost"]
interval: 5s
timeout: 3s
retries: 12
调试过程
依次检查容器状态、健康检查、网络解析、端口占用和数据库日志。备份验证必须包含一次真实恢复,不能只确认导出文件存在。
遇到的问题
预计常见问题包括数据卷残留旧密码、宿主端口冲突、环境变量未加载和 Windows 文件权限差异。
解决方案
把重建容器与删除数据卷区分开;启动前检查端口;提供示例环境文件;为 Windows 和 Linux 分别记录路径注意事项。
最终效果
当前为工程环境模板。完成后将提供 Compose 文件、初始化脚本、健康检查结果和备份恢复记录。
后续改进
加入只读数据库账号、自动备份任务和最小监控面板。