本文沉淀 docker-dev-env 从 Docker Desktop 迁移到 Colima 后的安全恢复、验证和清理流程,适用于 DGJ2、SAAS、MySQL、OpenResty、PHP、Redis、RabbitMQ 等本地服务。
1. 核心原则
- 先验证 Colima 中的项目、数据库和挂载,再考虑删除 Docker Desktop 旧数据。
- 显式使用
DOCKER_CONTEXT=colima,避免命令误发到另一个运行时。 - 不删除 MySQL volume,除非用户明确要求且已有备份和恢复方案。
- 不覆盖本地未提交配置;
docker-dev-env默认可能是脏工作区。 - 环境密码只从本地 env 或凭据仓读取,不打印到日志和文档。
2. 标准检查
docker context ls
df -h /Users/zhoujiangbin
du -sh /Users/zhoujiangbin/.colima /Users/zhoujiangbin/Library/Containers/com.docker.docker 2>/dev/null || true
DOCKER_CONTEXT=colima docker ps --format 'table {{.Names}}\t{{.Image}}\t{{.Status}}\t{{.Ports}}'
DOCKER_CONTEXT=colima docker system df
3. 恢复顺序
- 启动 Colima,确认 CPU、内存、磁盘和架构配置。
- 启动基础服务:MySQL、Redis、RabbitMQ、PHP 和 OpenResty。
- 检查 compose override、端口、网络、volume 和代码挂载。
- 启动 DGJ2 与 SAAS,验证登录页、健康检查、PHP 扩展和日志目录。
- 按用户关心的遗留项目逐个验证代码、数据库 schema 和关键表。
- 记录未迁移的数据或服务,再决定旧 Docker Desktop 数据是否可删。
4. 常见问题
- Docker context 正确但 daemon 未启动:先检查 Colima 状态,不要改 compose。
- OpenResty 返回 502:检查 PHP 容器、upstream 名称、端口和共享网络。
- PHP 扩展或 Xdebug 不一致:核对版本目录和挂载文件,不直接覆盖其他 PHP 版本。
- MySQL 能启动但业务库缺失:确认使用的是正确 volume,而不是新建空 volume。
- 端口冲突:不要同时启动 Docker Desktop 与 Colima 的同名基础服务。
- 磁盘占用大:先清理构建缓存、无用镜像和日志,最后才评估旧运行时数据。
5. 删除旧数据前的门槛
- DGJ2、SAAS 和指定遗留项目能启动。
- 所需数据库存在,关键表数量和业务抽查正常。
- volume、上传目录、证书和本地配置已确认来源。
- 用户确认不再需要旧 Docker Desktop 中未迁移的容器与数据。
- 有备份或可接受的重建方案。
6. 验证结果记录
每次环境恢复至少记录:日期、Docker context、已启动服务、数据库验证、失败项、处理动作、剩余风险和下一步。网站只保存脱敏结论,不保存密码、完整环境文件或私有连接地址。