技术博客

Docker Compose 上生产环境?这些反模式要先避开

Docker Compose 适合开发、测试和小规模部署,但生产使用时要注意网络、数据卷、日志、升级和恢复策略。

Docker Compose生产部署容器运维反模式

Docker Compose 很方便,一份 YAML 就能拉起多个服务。很多小团队也会把它用于生产环境。这个选择并不一定错,但必须知道边界。

Compose 不是 Kubernetes,它没有完整的调度、弹性、声明式控制面和多节点编排能力。用于生产时,最怕的是把开发环境写法原封不动搬上服务器。

常见反模式

第一,把数据库也随便放进同一个 Compose 文件,却没有备份、恢复和数据卷规划。容器可以删,数据不能丢。

第二,所有服务使用 latest 标签。镜像版本不可控,重启后可能直接变成另一个版本。

第三,日志不限制。容器日志不断增长,最后打满磁盘。

第四,环境变量散落在服务器上,没有模板、权限和审计。

第五,没有健康检查。服务进程还在,不代表业务可用。

生产使用建议

如果确实用 Compose,上线前至少做好五件事:

同时,部署脚本要做到可重复执行。不要依赖管理员手工进入服务器改配置,否则换人维护时很容易出事故。

什么时候该换 Kubernetes

当服务数量增加、多节点部署、灰度发布、自动扩缩容、服务发现、统一监控和权限隔离成为刚需时,就应该评估 Kubernetes 或其它编排平台。

Compose 的优势是简单,Kubernetes 的优势是规模化治理。不要为了炫技上 Kubernetes,也不要在复杂系统里硬撑 Compose。

参考资料