当前位置: 首页 > news >正文

Docker在CI/CD中的完整工作流:从本地开发到生产部署,一篇看懂

学完Docker的基础命令,很多人会问:在实际开发中,Docker到底怎么用?从写代码到上线,整个流程是怎么跑的?

今天这篇文章,用一个JavaScript应用的例子,把Docker在CI/CD全流程中的角色讲清楚。

一、本地开发:一条命令搞定依赖环境

假设你在开发一个JavaScript应用,需要用到MongoDB数据库。

以前,你要去官网下载MongoDB,安装、配置、启动,折腾半天。换了电脑,再来一遍。

现在,一条命令就够了:

docker run -d -p 27017:27017 mongo

MongoDB就在容器里跑起来了。你的JS应用直接连localhost:27017,完事。

Docker让本地环境搭建,从“小时级”变成“秒级”。

二、代码提交:自动触发CI构建

本地开发完成,代码提交到Git仓库。

这一步会触发CI流程(比如Jenkins、GitLab CI)。CI服务器会做两件事:

  1. 拉取最新代码

  2. 构建你的应用(比如npm run build)

构建完成后,CI会根据项目里的Dockerfile,把应用打包成一个Docker镜像。

三、镜像推送:存到私有仓库

企业里不会把自定义镜像推到公共的Docker Hub,而是推到私有仓库(比如之前我们搭的Nexus)。

为什么?两个原因:

  • 安全:代码和镜像不能公开

  • 统一管理:所有业务镜像集中存放,方便部署

CI构建完成后,会自动执行:

docker push 你的私有仓库地址/你的应用镜像名:版本号

四、部署服务器:拉取镜像并运行

部署服务器(开发环境、测试环境、生产环境)需要做两件事:

  1. 私有仓库拉取你自己的应用镜像

  2. Docker Hub拉取依赖的公共镜像(比如MongoDB)

# 拉取私有镜像 docker pull 你的私有仓库/你的应用:版本号 # 拉取公共镜像 docker pull mongo

然后启动两个容器,并配置网络让它们互通。

五、完整流程图

本地开发 → Git提交 → CI触发 → 构建镜像 → 推送到私有仓库 ↓ 部署服务器 ←───────────── 拉取应用镜像 ─────────┘ ↓ 拉取MongoDB镜像(从Docker Hub) ↓ 启动两个容器,配置网络 ↓ 测试/访问

六、Docker在这个流程中做了什么?

阶段Docker的作用
本地开发一条命令启动依赖服务(数据库、缓存等)
CI构建把应用打包成镜像,保证环境一致性
镜像存储推送到私有仓库,安全集中管理
部署拉取镜像,在任何服务器上一键运行

写在最后

Docker不是只用来在本地跑个容器玩玩的。它贯穿了整个开发到部署的流程:

  • 开发用Docker跑依赖

  • CI用Docker打包应用

  • 部署用Docker跑应用

环境不一致?不存在。依赖冲突?不存在。部署复杂?一条命令的事。

http://www.cnnetsun.cn/news/1717207.html

相关文章:

  • UsbDk架构解析:Windows USB设备独占访问的技术实现
  • RVC训练避坑指南:logs与weights目录文件结构深度解析
  • WaveTools:突破鸣潮帧率限制的技术解决方案
  • 3分钟上手!无需Steam客户端,免费下载创意工坊模组的终极指南
  • Wan2.2-I2V-A14B快速上手:基于RTX4090D的私有部署,WebUI可视化操作超简单
  • 新手必看:用APM飞控给F450无人机调参,从GPS校准到遥控器设置保姆级避坑指南
  • PyTorch版本选择避坑指南:如何在VSCode中快速安装兼容CUDA的稳定版本
  • 如何3分钟掌握跨平台Adobe插件安装:ZXPInstaller终极指南
  • SAP 预留(Reservation)实战指南:从创建到释放的全流程解析
  • 从单体到微服务:FastAPI项目中如何用Tortoise-ORM设计可扩展的RBAC权限中心
  • Kimi-VL-A3B-Thinking多场景:工业设备铭牌图→多语言识别→参数库匹配→维修建议
  • 新手入门:nanobot超轻量AI助手部署指南,5分钟拥有智能QQ助手
  • Phi-4-mini-reasoning加速深度学习:卷积神经网络(CNN)模型设计与调优实战
  • Phi-4-mini-reasoning应用场景:自动驾驶决策树逻辑验证与边界案例生成
  • 老旧Mac焕新指南:使用OpenCore Legacy Patcher升级系统的完整方案
  • vLLM实战体验:结合医疗数据集微调模型,打造专属AI助手
  • PyTorch 2.5实战教程:10个核心API详解,轻松搭建你的第一个AI模型
  • SegFormer:从原理到实践,剖析轻量级语义分割Transformer架构
  • VibeVoice在医疗问诊机器人中的语音交互实现
  • 小红书内容采集终极指南:3分钟掌握XHS-Downloader高效下载技巧
  • 面向高速OOK接收机的FPGA定时同步:Gardner误差检测与Farrow插值滤波器设计
  • STK自动化实战:利用MATLAB脚本高效导入多卫星TLE数据
  • VMware管理员必备:VCSA 6.7证书全生命周期管理实战
  • COLMAP去畸变实战:从‘踩坑’到‘避坑’,我的图像预处理工作流分享
  • 终极AlienFX Tools控制指南:完全掌控你的Alienware设备
  • 三步解锁音乐自由:ncmdump解密网易云音乐NCM格式完整指南
  • Halcon shape_trans算子实战:从原理到选型,解锁区域形状变换的精准控制
  • Starry Night Art Gallery部署指南:Python 3.9+环境配置与Streamlit Hack技巧
  • JAVA无人共享自习室预约小程序源码代码
  • LingBot-Depth效果惊艳:同一场景下不同传感器深度数据融合精炼效果