基于 Docker 的 CI/CD 方案

下面按免费 / 轻量 / 企业级 分类,整理目前最主流、基于 Docker 的 CI/CD 方案,全部能覆盖:开发(Win11)→ 测试(WSL/Ubuntu)→ 生产(Ubuntu) 全流程。

一、轻量免费方案(个人 / 小团队首选)

1. Gitea + Drone / Woodpecker CI

  • 特点:代码仓库 + CI/CD 一体化,全 Docker 部署
  • 适用:本地私有化、不想上云、机器配置一般
  • 流程:
    1. 开发机 Win11 跑 Gitea + CI Server
    2. 测试机 WSL/Ubuntu 跑 Runner
    3. 生产 Ubuntu 跑 Runner 或 SSH 部署
  • 优点:极轻量、配置简单、全免费
  • 缺点:功能不如 GitLab/GitHub 全面

2. GitHub Actions(云端免费)

  • 特点:不用自己搭服务,直接用 GitHub
  • 适用:代码放 GitHub、希望省事
  • 流程:
    1. 本地开发提交代码 → GitHub 自动构建镜像
    2. 推送镜像到 Docker Hub
    3. 测试 / 生产服务器通过 SSH 或 webhook 拉取更新
  • 优点:零维护、免费额度够用
  • 缺点:代码必须上云、网络依赖 GitHub

3. Azure DevOps Pipelines / GitLab CI(免费版)

  • 云端 CI,支持 Docker,免费额度足够个人 / 小团队使用
  • 可跨 Windows、Linux 环境执行任务

二、中量级自建方案(公司 / 团队常用)

4. GitLab CE(社区版完全免费)

  • 特点:代码管理 + CI/CD + 容器仓库 + 项目管理一站式
  • 适用:需要私有化、多人协作、标准化流程
  • 流程:
    • Win11 Docker 跑 GitLab
    • 开发机、测试机、生产机分别注册 GitLab Runner
    • 一条 .gitlab-ci.yml 完成:构建镜像 → 测试 → 推仓库 → 部署生产
  • 优点:功能极强、生态成熟、Docker 原生
  • 缺点:稍重,内存建议 ≥4GB

5. Jenkins + Docker

  • 特点:老牌经典、插件极多、几乎万能
  • 适用:老项目、复杂定制化流程
  • 流程:
    • Jenkins 跑在 Win11 或 Ubuntu
    • 用 Docker 代理执行构建、测试
    • 通过 SSH / 脚本发布到测试、生产
  • 优点:极度灵活
  • 缺点:配置繁琐、插件多易乱、维护成本高

三、企业级云原生方案(中大型项目)

6. GitLab EE / GitHub Enterprise

付费版,自带高级 CI/CD、安全扫描、多环境部署策略。

7. ArgoCD + Tekton / GitLab CI + Kubernetes

  • 云原生标准路线:
    • Tekton/GitLab CI:构建 Docker 镜像
    • ArgoCD:基于 Git 自动部署到 K8s 生产环境
  • 适合:生产用 Kubernetes 的场景

8. Azure DevOps / Jenkins X / CircleCI

企业级托管或自建,支持多环境灰度、蓝绿发布。


四、按你的环境(Win11 + WSL + Ubuntu 生产)推荐组合

最实用组合一览

  1. **最简单省心(推荐)**GitHub + GitHub Actions + Docker Hub + 测试 / 生产 SSH 部署→ 全程免费,不用自己搭服务

  2. **本地私有化(无外网、保密优先)**Gitea + Drone CI→ 开发 Win11 起服务,测试 / 生产各跑一个 agent

  3. **功能最完整(一步到位)**GitLab CE(Docker 运行)→ 自带镜像仓库、CI/CD、权限管理,一条龙

  4. 传统稳定方案Jenkins + Docker→ 适合复杂脚本、老项目迁移


五、通用标准 CI/CD 流程(所有方案都通用)

  1. 开发环境(Win11 + Docker Desktop)
    • 编写代码 → 提交代码 → 触发 CI
  2. 构建阶段
    • 拉取代码 → 打包 → 构建 Docker 镜像
  3. 测试阶段(WSL Ubuntu)
    • 运行单元测试 / 接口测试 / 容器测试
  4. 分发阶段
    • 推送镜像到私有仓库(GitLab/Gitea/Docker Hub)
  5. 生产部署(Ubuntu Server)
    • 拉取最新镜像 → 停止旧容器 → 启动新容器 → 完成发布
相关推荐
wdyan2972 天前
带着小白学习-微服务-5 实战:配置中心-数据库连接
数据库·学习·微服务
胡写代码3 天前
把数据库连接搬进配置中心,服务起不来:spring.config.import 的 4 个必填项
spring cloud·微服务
利威尔xu6 天前
Go IM 源码实战(14):本地缓存快 3000 倍,失效却难 10 倍
后端·缓存·微服务·面试·golang
利威尔xu6 天前
Go IM 源码实战(13):30 个会话只有 2 个红点,未读数错在三条路径
redis·后端·微服务·面试·golang
骑着蜗牛撵大象3276 天前
Spring Boot 4.1 + Spring AI 2.0:RAG 供文、图谱供关系、MCP 供工具的 Java Agent 平台
java·spring boot·spring·微服务·知识图谱·rag·mcp
code_slave(码畜)6 天前
微服务架构落地:慢 SQL 治理与连接池调优 —— 守住数据库的最后一道防线
数据库·spring boot·sql·spring cloud·微服务·架构
微三云 - 廖会灵 (私域系统开发)8 天前
企业级 SaaS 系统架构设计:单体、微服务还是模块化单体?技术选型实战
微服务·架构·系统架构
shuair8 天前
Spring Cloud 微服务脚手架:Simple Cloud 系统架构设计
spring cloud·微服务·系统架构
CodeGL8 天前
微服务框架——go-zero
微服务·架构·golang
草莓熊Lotso8 天前
【C++ 基于微服务的即时通讯系统】网关基建:cpp-httplib 与 WebSocketpp 从入门到实战
linux·开发语言·数据库·c++·redis·微服务·云原生