获取历史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.mzph.cn/news/33970.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Linux 基础(七)常用命令 - 磁盘分区命令

磁盘分区命令 磁盘相关命令dudffreetree 分区相关命令查看设备挂载明细挂载/卸载 分区挂载卸载持久挂载 分区查看当前分区详情对硬盘分区分区为新分区构建文件系统给新分区挂载一个目录 常见文件系统类型 磁盘相关命令 du 查看目录或者文件占用;默认会递归查询子目…

基于扩频的数字视频水印嵌入和检测算法matlab仿真

目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 5.算法完整程序工程 1.算法运行效果图预览 2.算法运行软件版本 matlab2022a 3.部分核心程序 ................................................................. for j 1:length(attens…

OpenCV实例(八)车牌字符识别技术(三)汉字识别

车牌字符识别技术(三)汉字识别 1.代码实例2.遇到问题3.汉字识别代码实例 相较于数字和英文字符的识别,汽车牌照中的汉字字符识别的难度更大,主要原因有以下4个方面: (1)字符笔画因切分误差导致非笔画或笔画流失。 (2…

安装使用IDEA,修改样式,配置服务,构建Maven项目(超级详细版)

目录 前言: 一,安装 1.1打开官网JetBrains: Essential tools for software developers and teams点击 Developer Tools,再点击 Intellij IDEA 2.点击下载​编辑 3.选择对应的版本,左边的 Ultimate 版本为旗舰版,需要…

阿里云服务器搭建Magento电子商务网站图文教程

本文阿里云百科分享使用阿里云服务器手动搭建Magento电子商务网站全流程,Magento是一款开源电商网站框架,其丰富的模块化架构体系及拓展功能可为大中型站点提供解决方案。Magento使用PHP开发,支持版本范围从PHP 5.6到PHP 7.1,并使…

MySQL数据库表的增删查改 - 进阶

一,数据库约束 1.1 约束对象 not null - 该列不能为空unique - 保证该列的每一行都不一样default - 规定没有给列赋值时的默认值(自定义)primary key - not null 和 unique 的结合,会给该列添加一个索引&#xff0…

CSS3 新特性

圆角阴影文字阴影线性渐变变换(transform)背景rgba伪元素:伪类 伪元素区别动画(animate)

中科亿海微浮点数转换定点数

引言 浮点数转换定点数是一种常见的数值转换技术,用于将浮点数表示转换为定点数表示。浮点数表示采用指数和尾数的形式,可以表示较大范围的数值,但存在精度有限的问题。而定点数表示则采用固定小数点位置的形式,具有固定的精度和范…

走进知识图谱(二)【世界知识图谱篇】知识表示的经典模型与平移模型及基于复杂关系建模的知识表示学习

上篇文章提到,该系列文章将主要围绕世界知识图谱和语言知识图谱这两大类知识图谱进行展开,并且提到知识图谱的主要研究包括了知识表示学习、知识自动获取和知识的推理与应用三大部分。今天主要介绍世界知识图谱的知识表示学习,其中包括经典的…

Android 13 Launcher——长按图标弹窗内容修改以及小组件等隐藏起来

目录 一.背景 二.实现思路 三.布局文件修改 四.隐藏代码中原先的view 一.背景 由于定制化开发需要将原先的长按图标原生弹窗界面隐藏,然后显示自定义的弹窗界面,如下就是我们来实现自定义的弹窗界面

redis Set类型命令

Redis中的Set是一种无序、不重复的集合数据结构,它提供了一系列的操作命令用于对Set进行添加、删除和查找等操作。以下是Redis中Set类型常见的一些命令: SADD key member [member …]:将一个或多个成员添加到指定的集合中。 示例:…

day-18 代码随想录算法训练营(19)二叉树 part05

513.找树左下角的值 思路一:层序遍历,每一层判断是不是最后一层,是的话直接返回第一个; 如何判断是不是最后一层呢,首先队列头部,其次记录左右子节点都没有的节点数是不是等于que.size();或…

【ARM 嵌入式 编译系列 6 -- GCC objcopy, objdump, readelf, nm 介绍】

文章目录 GCC objcopy 简介objcopy 常用参数 GCC objdump 简介GCC readelf 介绍GCC nm 介绍 GCC objcopy 简介 objcopy 是 GNU二进制工具集(binutils)的一部分,主要用于复制和转换目标文件。 在ARM GCC中,arm-none-eabi-objcopy通常用于从链接后的ELF格…

C语言 字符指针

1、介绍 概念: 字符指针,就是字符类型的指针,同整型指针,指针指向的元素表示整型一样,字符指针指向的元素表示的是字符。 假设: char ch a;char * pc &ch; pc 就是字符指针变量,字符指…

数据库--数据类型

数据库相关链接: 数据库基础操作--增删改查:http://t.csdn.cn/189CF 数据库--三大范式、多表查询、函数sql:http://t.csdn.cn/udJSG 数据类型 创建表的时候,我们在类型这里给出了不同的选项,比如有int ,…

python num循环怎么从1开始

如何实现python for循环从1开始? range()函数的作用和用法: 编写一个从数值1开始的循环: 执行后得到的结果 其他注意事项

HCIA---动态路由---RIP协议

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 目录 前言 一.动态路由 二.动态路由协议分类 IGP:内部网关协议 EGP:外部网关协议 三.RIP协议概述 RIP版本分类: RIP三要素: RIP…

3.0 Python 迭代器与生成器

当我们需要处理一个大量的数据集合时,一次性将其全部读入内存并处理可能会导致内存溢出。此时,我们可以采用迭代器Iterator和生成器Generator的方法,逐个地处理数据,从而避免内存溢出的问题。 迭代器是一个可以逐个访问元素的对象…

【LeetCode】870 . 优势洗牌

870 . 优势洗牌 方法:贪心 思路 这道题的思想类似于 “田忌赛马” ,把 nums1 当成是田忌的马,nums2 当成是齐威王的马。 讨论田忌的下等马(nums1 的最小值): 如果它能比过齐威王的下等马(nums…