您的位置 首页 golang

我的Docker实战——编写shell脚本实现项目的容器化部署

简介

本文主要用shell脚本实现的功能为:

有兴趣的童鞋千万不要错过哦~

背景

之前我写了一篇文章《我的shell脚本实战-编写一个系统发布脚本》,里面用shell脚本模拟了软件的发布,有兴趣的同学可以看看这篇文章:

当时的发布思路是这样的

将代码拉取至主机A进行编译,然后将编译后的jar包分发到各发布服务器上并运行。当时的操作是将jar包在虚拟机上运行,今天我决定改造下脚本,让jar做成镜像在docker容器中运行,同时打上tag,并将镜像推送到私服仓库。

说干就干~

或许有的同学对docker比较陌生,docker是一种容器技术,我们可以将自己的程序做成镜像,然后发布到镜像仓库中,我们需要的时候就拉取镜像,然后以容器的形式运行。感觉这个有点类似maven啊。

以前我们的程序是在服务器中运行的,现在我们的程序可以在容器中运行。与服务器没有了直接的交互。

这里我只是粗略地讲下docker,具体的知识可以网上了解下。

脚本编写

我的脚本组成大概是这样的:

拉取代码

拉取代码就不用我说了吧,我们直接从gitlab上面拉取:

 #最初时候需要git clone代码
git pull  

编译代码

我们使用maven将源代码编译成jar。

备份jar

在发放jar之前我们先要将原有的jar做个备份,因为编译代码与存放jar不是同一个服务器,这里我们需要远程访问备份。

拷贝发放jar

备份好后我们需要发放jar到指定路径。

备份代码执行后可以在指定路径查看结果。

镜像制作

接下来我们就需要将jar制作成镜像。

首先我们需要编写Dockerfile文件:

Dockerfile可用于自动构建镜像。

我们再创建docker-compose.yml文件,用与启动指定容器。文件内容如下:

这里使用docker-compose可以方便地编排启停容器,这里我们将程序使用的8080端口映射成服务器外部使用的18098端口,当容器启动后需要访问18098端口。

之后我们只要执行命令

 docker-compose up --force-recreate --build -d  

即可构建镜像和启动容器。

我们访问容器镜像管理系统Portainer,发现镜像成功构建,容器也成功启动。

重启动的容器可以看到映射的端口为18098。

推送镜像到私有仓库

每次推送镜像时需要删除原有的容器,然后再生成一个新的容器。上面的代码主要做几件事:

删除原有容器

构建新镜像并启动容器

给镜像打tag

推送镜像

在推送到私有仓库前我们需要到私服上创建一个仓库,这里我在harbor上面创建了仓库:crawl-service

仓库的大小我限制成800MB。执行推送脚本,我们来看看结果。

在harbor上也看到了镜像:

我们访问浏览器,项目的swagger也能成功访问了。

脚本整合

我们将上面的步骤整合到一个脚本中,来看看运行结果。

最后我加上了钉钉机器人的消息推送通知,只要脚本执行成功,就会发放消息通知。

通知模板代码如下:

通知效果见下图:

最后

当然我们也可以在IDEA里面做相应的配置,实现镜像构建。

这里我使用脚本的原因是可以代码构建,镜像制作,容器启动,镜像推送一步完成,我们可以将脚本加入到定时任务中,实现定时执行:

 vi /etc/crontab  

以上就是本篇的全部内容啦,如果对你有帮助,欢迎点赞+转发。

文章来源:智云一二三科技

文章标题:我的Docker实战——编写shell脚本实现项目的容器化部署

文章地址:https://www.zhihuclub.com/95622.shtml

关于作者: 智云科技

热门文章

网站地图