让 Docker 部署变得可重复
把运行环境写进配置,把数据留在持久卷里。下一次部署,应该是一段明确的流程。
本文为可替换的原创演示文章。
镜像与数据有不同的生命周期
镜像可以重新构建,文章数据库与上传图片却不能随意丢弃。部署时最先确认的事情,是哪些目录属于持久数据,并将它们挂载到独立的数据卷。
如果数据库保存在容器可写层里,删除容器就可能同时删除所有内容。一个系统能否升级,取决于它是否清楚地区分了程序和数据。
让启动失败给出明确原因
公开域名、内部 API 地址和数据路径应该通过环境变量提供。缺失关键配置时,与其让应用勉强启动后在某个页面报错,不如在启动阶段直接报告具体问题。
健康检查也应检查真实依赖。对博客而言,数据库能否读取比首页是否返回一段静态字符串更有意义。
把恢复也放进流程
有备份文件,不代表能够恢复。至少在第一次上线前,将备份解压到一个新的数据目录,启动服务,并确认文章和图片都能被读取。
构建镜像 → 启动服务 → 健康检查 → 访问验证
↓
数据备份
最可靠的部署文档,不是写得很长,而是换一台机器时可以逐步执行,并在每一步知道成功意味着什么。