将项目代码制作成镜像,再保存成 tar 归档文件全过程

一、为项目编写make.sh和Dockerfile、requirements.txt。

1.make.sh文件模板

#!/usr/bin/env bash
echo "开始制作镜像..."
#用日期标记镜像版本
image_tag=`date +%Y%m%d` #_%H%M
echo "当前时间:$image_tag"
#制作镜像,使用的腾讯云(用的当前目录下的Dockerfile)
docker build -t ccr.ccs.tencentyun.com/my_test/my_test_project:v${image_tag} . 

echo "制作镜像成功!"
#登录腾讯云账号
docker login --username=my_user_name -p=my_password ccr.ccs.tencentyun.com
#向腾讯云推送制作好的镜像
docker push ccr.ccs.tencentyun.com/my_test/my_test_project:v${image_tag}

echo "镜像版本保存"
#将刚才制作好的镜像版本标识为latest
docker tag ccr.ccs.tencentyun.com/my_test/my_test_project:v${image_tag} ccr.ccs.tencentyun.com/my_test/my_test_project:latest
#向腾讯云推送latest镜像
docker push ccr.ccs.tencentyun.com/my_test/my_test_project:latest

echo "删除本地镜像"
docker rmi ccr.ccs.tencentyun.com/my_test/my_test_project:v${image_tag}
docker rmi ccr.ccs.tencentyun.com/my_test/my_test_project:latest

2.Dockerfile模板

#镜像基于某个python版本镜像
FROM ccr.ccs.tencentyun.com/my_test/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

3.requirements.txt(项目所需的python包,及python包版本)

#列如
numpy==1.14.5
pandas==0.21.0
lxml==4.2.3
SQLAlchemy==1.2.10
SciPy==1.1.0
pymysql==0.9.2
requests==2.19.1
pyyaml==3.13
xlrd==1.1.0
arrow==0.13.2
statsmodels==0.9.0
patsy==0.5.0
redis==2.10.6

二、把项目源码文件放到到gitlab。

三、用jenkins实现项目更新就自动打包镜像。

1.jenkins上新建工程。
选择:构建一个自由风格的软件项目

2.配置源码管理。
源码管理选 git,Repository URL填入该项目的gitlab链接。
Credentials设置git账号的账号密码。
指定分支(为空时代表any):指定分支 列如指定master 则填入 */master 。

3.配置构建触发器。
选择 轮询 SCM,日程表填入 * * * * *
(即每分钟判断一下git代码是否有更新,如果更新就pull最新的代码,然后自动运行构建步骤)

4.配置构建。
增加构建步骤 选择Execute shell script on remote host using ssh。
然后SSH site选择负责打包的Linux主机。
Command 写入:

#登录腾讯云docker账号
sh /mypath/docker_login.sh
cd /mypath/jenkins_data/workspace/my_test_project
#为make.sh文件赋执行权限
chmod 777 make.sh
#运行make.sh(用最新代码制作镜像,并推送到腾讯云仓库)
./make.sh

四、把镜像保存成 tar 归档文件。

#拉下最新的项目镜像
docker push ccr.ccs.tencentyun.com/my_test/my_test_project:latest
#把镜像保存为tar归档文件
docker save -o my_test_project_v20230526.tar ccr.ccs.tencentyun.com/my_test/my_test_project:latest

五、使用归档文件。(一般用save和load就行)
1.docker load导入使用 docker save 命令导出的镜像

docker load < my_test_project_v20230526.tar 

2.docker import 从归档文件中创建镜像。

docker import  my_test_project_v20230526.tar  new_name:new_version

3.laod与import的区别。
docker import一般与docker export 配合使用。
docker load一般与docker save 配合使用。
如果需要导入整个镜像,包括镜像层级结构和元数据,则应该使用 docker load 命令。
如果只需要导入容器的文件系统,并将其转化为一个新的镜像,则可以使用 docker import 命令。

5.也可以把tar文件上传到腾讯云 cos对象存储里面,方便后续使用。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

confined.

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

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

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

打赏作者

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

抵扣说明:

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

余额充值