获取历史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:latest

echo "删除本地镜像"
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/timezone

RUN 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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

confined.

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值