Docker Compose 上生产环境?这些反模式要先避开
Docker Compose 适合开发、测试和小规模部署,但生产使用时要注意网络、数据卷、日志、升级和恢复策略。
Docker Compose 很方便,一份 YAML 就能拉起多个服务。很多小团队也会把它用于生产环境。这个选择并不一定错,但必须知道边界。
Compose 不是 Kubernetes,它没有完整的调度、弹性、声明式控制面和多节点编排能力。用于生产时,最怕的是把开发环境写法原封不动搬上服务器。
常见反模式
第一,把数据库也随便放进同一个 Compose 文件,却没有备份、恢复和数据卷规划。容器可以删,数据不能丢。
第二,所有服务使用 latest 标签。镜像版本不可控,重启后可能直接变成另一个版本。
第三,日志不限制。容器日志不断增长,最后打满磁盘。
第四,环境变量散落在服务器上,没有模板、权限和审计。
第五,没有健康检查。服务进程还在,不代表业务可用。
生产使用建议
如果确实用 Compose,上线前至少做好五件事:
- 镜像固定版本
- 数据卷路径明确
- 日志大小限制
- 健康检查配置
- 备份和恢复演练
同时,部署脚本要做到可重复执行。不要依赖管理员手工进入服务器改配置,否则换人维护时很容易出事故。
什么时候该换 Kubernetes
当服务数量增加、多节点部署、灰度发布、自动扩缩容、服务发现、统一监控和权限隔离成为刚需时,就应该评估 Kubernetes 或其它编排平台。
Compose 的优势是简单,Kubernetes 的优势是规模化治理。不要为了炫技上 Kubernetes,也不要在复杂系统里硬撑 Compose。
