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跑应用环境不一致不存在。依赖冲突不存在。部署复杂一条命令的事。