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

获取历史dokcer镜像项目,并上传gitlab,再打包镜像管理

今天遇到一个问题: 发现一个部署在Jenkins的脚本用的docker镜像是:test_project:v20191108,即这个项目是19年的一个版本,由于代码不断更新,用现在的最新代码运行该脚本,可能不能运行了,必须用19年的代码才可以。因为一些原因,可能要修改这个脚本的某些配置。

所以,准备从19年的docker镜像里,获取但是版本的代码。然后把该代码提交到原项目的一个新分支里。然后package jenkins进行管理。打包镜像,再修改jenkins脚本镜像名为新镜像名。

过程简述:

登录
docker login --username=xxx  -p=xxx xxx.xxx.tencentyun.com
拉镜像
docker pull xxx.xxx.tencentyun.com/xxx/test_project:v20191108
用该镜像运行容器
docker  run --name="test_project_v20191108"    -itd   xxx.xxx.tencentyun.com/xxx/test_project:v20191108   /bin/bash
拷贝容器里项目文件到本机(/usr/src/app/是项目目录)
docker cp test_project_v20191108:/usr/src/app/   ./
把项目代码从服务器传到开发机器,例如通过xshell
...
gitlab上对test_project项目创建一个分支来放v20191108版本的代码(可以叫test_project_v20191108)。
然后把这个分支的代码拉到本地:
这样直接拉取,会与本地的test_project这个文件夹冲突
git clone --depth=1 -b test_project_v20191108    http://xxx.xxx.test_project.git
所以要重命名(比如说拉到本地文件夹叫test_project_v20191108):
git clone --depth=1 -b test_project_v20191108    http://xxx.xxx.test_project.git   test_project_v20191108然后打开这个分支项目,把镜像里2019年的代码复制覆盖掉这个分支的代码,然后推到gitlab上。这样19年的项目就被保存到gitlab的test_project项目的test_project_v20191108分支了!然后在复制打包的jenkins上把配置部署,实现项目代码更新,jenkins实时构建新镜像。Jenkins 
-新建任务
-源码管理:git 
- 输入gitlab链接、配置git账户 
- Branches to build来指定分支:test_project_v20191108
- 构建触发器: 轮询 SCM:* * * * *  (时刻监控gitlab代码更新)
- 构建 SSH site:配置打包linux服务器
- 构建 Command :cd 打包服务器放项目的目录/Jenkins任务名chmod 777 make.sh && ./make.sh在make.sh里编写相应命令,即可实现自动打包新镜像,并推送服务器。然后在该脚本本来的jenkins任务配置信息处修改镜像名为新镜像名(test_project:v20191108修改为test_project_v20191108:latest)docker login --username=xxx -p=xxx   xxx.xxx.tencentyun.com
docker pull xxx.xxx.tencentyun.com/xxx/test_project_v20191108:latest
cmd='xxx/test_scrept.py'
docker run -t --rm --name="xxx_test_scrept" xxx.xxx.tencentyun.com/xxx/test_project_v20191108:latest  python -W ignore ${cmd}

make.sh模板

#!/usr/bin/env bash
echo "开始制作镜像..."
image_tag=`date +%Y%m%d` #_%H%M
echo "当前时间:$image_tag"
docker build -t xxx.xxx.tencentyun.com/xxx/test_project_v20191108:v${image_tag} .
echo "制作镜像成功!"docker login --username=xxx  -p=xxx xxx.xxx.tencentyun.com
docker push xxx.xxx.tencentyun.com/xxx/test_project_v20191108:v${image_tag}echo "镜像版本保存"
docker tag xxx.xxx.tencentyun.com/xxx/test_project_v20191108:v${image_tag} xxx.xxx.tencentyun.com/xxx/test_project_v20191108:latest
docker push xxx.xxx.tencentyun.com/xxx/test_project_v20191108:latestecho "删除本地镜像"
docker rmi xxx.xxx.tencentyun.com/xxx/test_project_v20191108:v${image_tag} 
docker rmi xxx.xxx.tencentyun.com/xxx/test_project_v20191108:latest

Dockerfile模板

#镜像基于某个python版本镜像
FROM xxx.xxx.tencentyun.com/xxx/python_base:data_v20230526#设置时区
ENV TZ=Asia/Shanghai
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezoneRUN mkdir -p /usr/src/app
ENV PYTHONPATH=/usr/src/app
WORKDIR /usr/src/app#复制当前目录下所有文件到镜像里
COPY . /usr/src/app
COPY requirements.txt /usr/src/app/requirements.txt
#为镜像安装需要的pyton包
RUN pip install -r /usr/src/app/requirements.txt
#自己打包的代码包导入
RUN pip install /usr/src/app/dist/CAL.tar.gz
CMD python
http://www.lryc.cn/news/117084.html

相关文章:

  • 【Go语言】Golang保姆级入门教程 Go初学者chapter3
  • 网络防御(4)
  • conda错误处理:ResolvePackageNotFound
  • linux初学者小命令
  • 宝尊电商短期前景堪忧,宝尊国际能否取得成功还有待验证
  • 百川智能发布首个530亿参数闭源大模型,今年追上GPT-3.5
  • Redis的常用数据结构
  • 深入JVM - JIT分层编译技术与日志详解
  • 临时文档2
  • [深度学习入门]PyTorch深度学习[数组变形、批量处理、通用函数、广播机制]
  • 男孩向妈妈发脾气爸爸言传身教
  • uniapp实现自定义导航内容高度居中(兼容APP端以及小程序端与胶囊对齐)
  • Python调用外部电商API的详细步骤
  • 什么是NVME
  • 交叉编译驱动和应用出现警告提示错误“cc1:all warnings being treated as errors”解决方法
  • 基于nodejs+vue+uniapp微信小程序的短视频分享系统
  • ElasticSearch:环境搭建步骤
  • 剑指 Offer 37. 序列化二叉树
  • 如何快速完成MySQL数据的差异对比|NineData
  • Vue3项目中将html元素转换为word
  • Unity-Shader-高亮Highlight
  • Linux操作系统(二):操作系统结构与内核设计
  • 小研究 - 领域驱动设计DDD在IT企业内部网站开发中的运用(二)
  • 在Qt中实现鼠标监听与交互
  • 力扣hot100刷题记录
  • 阿里云国际站视频直播服务是什么呢?
  • python实现简单的爬虫功能
  • AI文档识别技术之表格识别 (一)
  • uni-app 支持 app端, h5端,微信小程序端 图片转换文件格式 和 base64
  • 云计算——存储虚拟化简介 与 存储模式及方法