dockerfile 增量发布 背景: 问题: 解决方案:

背景:

项目中使用了k8s环境,每次更新都要打包成docker镜像推到harbor仓库。 之前每次都是全量发布,即在本地把要更新的文件都替换好,然后整个包重新打成镜像。

问题:

  1. 一个项目有时并不是只有一个人维护,本地不一定是最新的文件,存在漏更新的风险。
  2. 每次都要重新打包整个项目,速度比较慢。

解决方案:

  1. 先把服务器上最新版本的镜像拉取到本地,docker命令:docker pull 192.168.1.8/patrol-svr/patrol-svr:v1.01
  2. 以本地最新的镜像为基础,进行相应的更新与复制操作。
    dockerfile文件内容如下:

FROM 192.168.1.8/patrol-svr/patrol-svr:v1.01

COPY module /usr/local/pipenet-docker-patrol/module

Add module1 /usr/local/pipenet-docker-patrol/

备注:

COPY 命令,将文件或文件夹复制到相应路径,并覆盖替换相应文件内容。
Add 命令, 将文件或文件夹增加到相应路径。

缺陷:

对于镜像中的内容,无法进行删除,如果需要删除镜像中的某个文件,则还是用全量发布的形式。

补充:

对于需要删除的文件,可以通过修改文件后缀名的方式来处理。例如tomcat中的jar包,修改后缀名也可以实现删除的效果。 在dockerfile中补充如下命令:

RUN mv /usr/local/tomcat/webapps/app/WEB-INF/lib/log4j-1.2-api-2.14.1.jar /usr/local/tomcat/webapps/app/WEB-INF/lib/log4j-1.2-api-2.14.1.jar-bak

本文转载自: 掘金

开发者博客 – 和开发相关的 这里全都有

0%