保山网站制作,用div做网站中间部分,个人网站的设计与实现主要技术指标,如何成功开展网络营销今天遇到一个问题#xff1a; 发现一个部署在Jenkins的脚本用的docker镜像是#xff1a;test_project:v20191108#xff0c;即这个项目是19年的一个版本#xff0c;由于代码不断更新#xff0c;用现在的最新代码运行该脚本#xff0c;可能不能运行了#xff0c;必须用19…今天遇到一个问题 发现一个部署在Jenkins的脚本用的docker镜像是test_project:v20191108即这个项目是19年的一个版本由于代码不断更新用现在的最新代码运行该脚本可能不能运行了必须用19年的代码才可以。因为一些原因可能要修改这个脚本的某些配置。
所以准备从19年的docker镜像里获取但是版本的代码。然后把该代码提交到原项目的一个新分支里。然后package jenkins进行管理。打包镜像再修改jenkins脚本镜像名为新镜像名。
过程简述
登录
docker login --usernamexxx -pxxx xxx.xxx.tencentyun.com
拉镜像
docker pull xxx.xxx.tencentyun.com/xxx/test_project:v20191108
用该镜像运行容器
docker run --nametest_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 --depth1 -b test_project_v20191108 http://xxx.xxx.test_project.git
所以要重命名比如说拉到本地文件夹叫test_project_v20191108
git clone --depth1 -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 --usernamexxx -pxxx xxx.xxx.tencentyun.com
docker pull xxx.xxx.tencentyun.com/xxx/test_project_v20191108:latest
cmdxxx/test_scrept.py
docker run -t --rm --namexxx_test_scrept xxx.xxx.tencentyun.com/xxx/test_project_v20191108:latest python -W ignore ${cmd}make.sh模板
#!/usr/bin/env bash
echo 开始制作镜像...
image_tagdate %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 --usernamexxx -pxxx 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 TZAsia/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