← 返回项目作品

Engineering Portfolio

Docker + MySQL 可复现实验环境

为数据库与 Web 实验建立可启动、可检查、可备份、可恢复的容器化环境模板。

项目背景

数据库实验最容易因版本、端口、初始化顺序和数据卷状态产生“只在某台电脑能运行”的问题。这个项目专门记录可复现环境的边界与检查方式。

功能目标

  • 使用 Compose 声明应用与 MySQL 服务。
  • 通过健康检查控制启动顺序。
  • 将配置、敏感信息和持久化数据分离。
  • 提供备份、恢复和故障排查步骤。

硬件与软件环境

  • Windows + Docker Desktop 或 Linux + Docker Engine。
  • Docker Compose、MySQL 8.0 与轻量 Web 应用。

系统架构

应用和数据库位于独立容器,通过内部网络通信;数据库数据使用命名卷;初始化 SQL 只在新数据卷上执行;主机仅暴露必要端口。

实现步骤

  1. 固定镜像版本和端口边界。
  2. 编写数据库健康检查与应用依赖条件。
  3. 增加 .env.example 和最小配置说明。
  4. 验证全新启动、保留数据重启和完整恢复。
  5. 记录非 Docker 本地运行的等价路径。

核心代码说明

健康检查必须验证数据库真正可接受连接,而不是只检查容器进程存在。应用连接使用服务名,不写死主机 IP。

healthcheck:
  test: ["CMD", "mysqladmin", "ping", "-h", "localhost"]
  interval: 5s
  timeout: 3s
  retries: 12

调试过程

依次检查容器状态、健康检查、网络解析、端口占用和数据库日志。备份验证必须包含一次真实恢复,不能只确认导出文件存在。

遇到的问题

预计常见问题包括数据卷残留旧密码、宿主端口冲突、环境变量未加载和 Windows 文件权限差异。

解决方案

把重建容器与删除数据卷区分开;启动前检查端口;提供示例环境文件;为 Windows 和 Linux 分别记录路径注意事项。

最终效果

当前为工程环境模板。完成后将提供 Compose 文件、初始化脚本、健康检查结果和备份恢复记录。

后续改进

加入只读数据库账号、自动备份任务和最小监控面板。