提示:本网站现在为维护调试状态

Docker Compose 生产部署实战

Choyeon
Choyeon
2026年8月25日 1 分钟阅读 678 阅读
386 字 1,181 字符 更新于 2026年11月8日
Docker Compose 生产部署实战
目录

容器化部署已成为现代应用交付的标准方式,Docker Compose 能快速编排多服务架构,但生产环境需要更多稳定性保障措施。

服务配置与资源限制

为每个服务配置合理的 CPU 和内存限制,防止单点故障拖垮宿主机。配合 healthcheck 确保服务异常时自动重启。

version: "3.9"
services:
  web:
    build: { context: ., dockerfile: Dockerfile, target: production }
    image: registry.example.com/app:${TAG:-latest}
    restart: unless-stopped
    healthcheck:
      test: ["CMD", "curl", "-f", "http://localhost/health"]
      interval: 30s
      timeout: 5s
      retries: 3
      start_period: 40s
    deploy:
      resources:
        limits: { cpus: "2.0", memory: 2G }
        reservations: { cpus: "0.5", memory: 512M }
    logging:
      driver: json-file
      options: { max-size: "10m", max-file: "5" }
    networks: [frontend, backend]
    secrets: [db_password]
    depends_on:
      db: { condition: service_healthy }
  db:
    image: postgres:16-alpine
    volumes: [pgdata:/var/lib/postgresql/data]
    healthcheck:
      test: ["CMD-SHELL", "pg_isready -U app"]
      interval: 10s
      timeout: 5s
      retries: 5
volumes: { pgdata: null }
networks: { frontend: null, backend: { internal: true } }
secrets: { db_password: { file: ./secrets/db_password.txt } }

网络与安全隔离

将数据库等内部服务放入 internal 网络,不对外暴露端口。敏感凭证通过 secrets 机制挂载,避免硬编码进镜像。

配置项 开发环境 生产环境 推荐值
restart no unless-stopped 生产必开
healthcheck 可选 必须 30s间隔/3次重试
resource limits 无 必须 CPU 2C/内存 2G
logging driver 默认 json-file max-size 10m
network mode bridge 分frontend/backend internal隔离DB

最佳实践

使用多阶段构建减小镜像体积,结合 .dockerignore 排除无关文件,定期清理悬空镜像和卷。

X微博Telegram

本文作者

投票

你最希望 Rosetta 优先加入哪项功能?

社区投票(演示数据,可后台删除)

评论 (6)

0 / 3000
AI炼丹学徒
AI炼丹学徒2026年9月26日

哈哈,备份不验证等于没备份那段我笑了,我之前就是吃了这个大亏,数据库备份了半年才发现根本恢复不了。

开源贡献者小Z
开源贡献者小Zoss-z.dev2026年9月26日

终于找到一篇不吹不黑的 K8s 入门指南了,之前看的文章要么太浅要么上来就一堆概念,你这个循序渐进的节奏我太喜欢了!

摸鱼达人小王
摸鱼达人小王2026年9月26日

干货满满,收藏吃灰!

嵌入式极客
嵌入式极客embedded-lab.io2026年9月26日

太好了!终于有人把 CI/CD 的完整流程讲清楚了,之前看了好多文章都是只讲一半,跟着这篇一步步跑通了整个流水线。

自由撰稿人阿秋
自由撰稿人阿秋qiuwrites.blog2026年9月25日

补充一个小技巧:用 kubectl 的 kubectx + kubens 插件切换集群和命名空间超级方便,谁用谁知道。

熬夜攻城狮
熬夜攻城狮nightowl.tech2026年9月25日

看到你那个 Nginx 配置示例,有个安全问题:server_tokens 建议关掉,不然会暴露 Nginx 版本号给攻击者。

相关文章

CI/CD Pipeline 设计:GitHub Actions + Cache + Matrix Build

CI/CD Pipeline 设计:GitHub Actions + Cache + Matrix Build

从零设计一套工业级 GitHub Actions 流水线:npm/pip 依赖缓存、多版本 Node/Python Matrix 并行构建、Docker 镜像分层缓存、Lint+Test+Build+Publish 分阶段、条件执行、环境矩阵、失败重试和发布门禁最佳实践,附完整工作流代码。

1 分钟阅读
Git 高级工作流

Git 高级工作流

全面掌握 Git 进阶操作:Interactive Rebase 整理提交历史、Cherry-pick 精挑细选移植提交、Bisect 二分查找回归 Bug 源头,配合 reflog 与 reset 拯救误操作。

1 分钟阅读
Kubernetes Pod 生命周期 + Init Container + Sidecar

Kubernetes Pod 生命周期 + Init Container + Sidecar

详细拆解 Kubernetes Pod 从 Pending 到 Terminated 的完整状态机、PostStart/PreStop 钩子执行时机、Init Container 前置依赖保证、Sidecar 容器模式(istio-proxy、日志收集),以及优雅终止零停机配置。

1 分钟阅读
Monorepo 工具链:Turborepo + pnpm workspace

Monorepo 工具链:Turborepo + pnpm workspace

单仓多包(Monorepo)管理大型前端全栈项目的完全指南:用 pnpm workspace 做依赖统一安装和链接,Turborepo 做任务编排、增量构建和远程缓存,对比 Nx/Lerna,附带代码复用与版本发布最佳实践。

1 分钟阅读
Zero Trust 安全架构入门:永不信任,始终验证

Zero Trust 安全架构入门:永不信任,始终验证

零信任安全模型系统入门:以"永不信任,始终验证"为核心原则,打破传统边界防护(VPN=内部可信)的思维。从身份认证(MFA/SAML)、设备健康检查、最小权限 RBAC、微隔离 mTLS、持续信任评分到可观测审计链路的 6 大支柱详解,附落地实施路线。

1 分钟阅读
Linux 性能调优:perf_events + bpftrace + BCC

Linux 性能调优:perf_events + bpftrace + BCC

从 CPU、内存、IO、网络四个维度,使用 perf_events 采样堆栈、bpftrace 一行脚本追踪内核点、BCC 工具集 biolatency/offcputime,快速定位生产服务器性能瓶颈,附真实排查思路。

1 分钟阅读