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

Docker Compose 生產部署實戰

Choyeon
Choyeon
2026年8月25日 1 分鐘閱讀 675 閱讀
386 字 1,181 字元 更新於 2026年11月8日
Docker Compose 生產部署實戰
目錄

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 分鐘閱讀