企业级devops脚手架需包含代码托管(gitlab/gitea)、ci/cd执行器(runner)、制品管理(harbor/nexus)、配置与密钥管理(vault/consul)、可观测性(prometheus/grafana/loki)五大核心组件,并通过标准化docker-compose.yml、多环境覆盖文件、初始化脚本、配置模板及验证清单实现可执行、可复现、可审计的环境契约。

用 Docker Compose 编排文件标准化构建企业级 DevOps 脚手架,核心不是堆砌服务,而是把“人要做的事”变成“机器可执行、可复现、可审计”的配置。它本质是一套环境契约:无论谁在哪台机器上运行 docker-compose up,得到的都是一致、安全、可运维的 DevOps 平台。
明确脚手架包含哪些关键组件
一个真正可用的企业级 DevOps 脚手架,不能只跑个 GitLab 或 Jenkins 就算完。它需要形成闭环能力:
- 代码托管:GitLab CE 或 Gitea,支持 LDAP/OAuth 集成和仓库策略
- CI/CD 执行器:Runner(如 GitLab Runner 或 Semaphore),需挂载宿主机 Docker Socket 实现容器内建
- 制品管理:Harbor 或 Nexus,带项目配额、扫描策略和镜像签名
- 配置中心与密钥管理:Consul + Vault 组合,或单独部署 HashiCorp Vault,避免密码硬编码
- 可观测性底座:Prometheus + Grafana + Loki,预置 DevOps 流水线看板和日志检索模板
编写高可维护的 docker-compose.yml
一份生产就绪的编排文件,必须兼顾清晰性、隔离性和扩展性:
- 按职责拆分服务块,每个服务使用语义化名称(如
gitlab-web、harbor-core),不写service1这类占位名 - 数据库和服务严格分离,禁用
links,统一通过自定义网络(如devops-net)通信 - 所有外部挂载路径使用命名卷(
volumes:下定义)或相对路径(如./data/gitlab:/var/opt/gitlab),禁止绝对路径硬编码 - 敏感配置全部抽离为环境变量,通过
.env文件加载,且在.gitignore中排除该文件 - 为每个服务配置
healthcheck和restart: unless-stopped,保障基础可用性
支持多环境差异化部署
开发、测试、预发、生产环境不能共用同一份配置。推荐采用 Compose 的多文件叠加机制:
- 主文件
docker-compose.yml定义通用服务结构、网络、卷和默认资源限制 - 环境专属文件如
docker-compose.prod.yml覆盖端口、TLS 设置、资源上限(cpus/memory)、健康检查间隔等 - 启动命令示例:
docker-compose -f docker-compose.yml -f docker-compose.prod.yml up -d - 配合 Makefile 封装常用操作(
make up-prod、make logs-gitlab),降低团队使用门槛
配套基础设施不可少
光有 docker-compose.yml 不足以支撑企业级运转,还需三类支撑文件:
-
初始化脚本:如
scripts/init-harbor.sh,自动创建项目、设置机器人账号、开启漏洞扫描 -
配置模板:如
templates/gitlab.rb、templates/vault.hcl,确保服务启动前完成必要定制 -
验证清单:提供
verify.sh脚本,检查各服务端口连通性、API 响应状态码、关键目录权限,作为部署后必检项











