Docker在CI/CD中的完整工作流:从本地开发到生产部署,一篇看懂
学完Docker的基础命令,很多人会问:在实际开发中,Docker到底怎么用?从写代码到上线,整个流程是怎么跑的?
今天这篇文章,用一个JavaScript应用的例子,把Docker在CI/CD全流程中的角色讲清楚。
一、本地开发:一条命令搞定依赖环境
假设你在开发一个JavaScript应用,需要用到MongoDB数据库。
以前,你要去官网下载MongoDB,安装、配置、启动,折腾半天。换了电脑,再来一遍。
现在,一条命令就够了:
docker run -d -p 27017:27017 mongoMongoDB就在容器里跑起来了。你的JS应用直接连localhost:27017,完事。
Docker让本地环境搭建,从“小时级”变成“秒级”。
二、代码提交:自动触发CI构建
本地开发完成,代码提交到Git仓库。
这一步会触发CI流程(比如Jenkins、GitLab CI)。CI服务器会做两件事:
拉取最新代码
构建你的应用(比如npm run build)
构建完成后,CI会根据项目里的Dockerfile,把应用打包成一个Docker镜像。
三、镜像推送:存到私有仓库
企业里不会把自定义镜像推到公共的Docker Hub,而是推到私有仓库(比如之前我们搭的Nexus)。
为什么?两个原因:
安全:代码和镜像不能公开
统一管理:所有业务镜像集中存放,方便部署
CI构建完成后,会自动执行:
docker push 你的私有仓库地址/你的应用镜像名:版本号四、部署服务器:拉取镜像并运行
部署服务器(开发环境、测试环境、生产环境)需要做两件事:
从私有仓库拉取你自己的应用镜像
从Docker Hub拉取依赖的公共镜像(比如MongoDB)
# 拉取私有镜像 docker pull 你的私有仓库/你的应用:版本号 # 拉取公共镜像 docker pull mongo然后启动两个容器,并配置网络让它们互通。
五、完整流程图
本地开发 → Git提交 → CI触发 → 构建镜像 → 推送到私有仓库 ↓ 部署服务器 ←───────────── 拉取应用镜像 ─────────┘ ↓ 拉取MongoDB镜像(从Docker Hub) ↓ 启动两个容器,配置网络 ↓ 测试/访问
六、Docker在这个流程中做了什么?
| 阶段 | Docker的作用 |
|---|---|
| 本地开发 | 一条命令启动依赖服务(数据库、缓存等) |
| CI构建 | 把应用打包成镜像,保证环境一致性 |
| 镜像存储 | 推送到私有仓库,安全集中管理 |
| 部署 | 拉取镜像,在任何服务器上一键运行 |
写在最后
Docker不是只用来在本地跑个容器玩玩的。它贯穿了整个开发到部署的流程:
开发用Docker跑依赖
CI用Docker打包应用
部署用Docker跑应用
环境不一致?不存在。依赖冲突?不存在。部署复杂?一条命令的事。
