现在Harbor仓库已经搭建完毕,下面做的事情就是通过Jenkins生成镜像,然后把镜像推送至Harbor仓库。
(1)镜像推送前准备
在将要生成镜像的服务器中,先关掉Harbor仓库的安全认证。新建/etc/default/docker文件,文件中填写如下内容:
然后在/usr/lib/systemd/system/docker.service文件中添加如下内容:
EnvironmentFile=-/etc/default/docker
使用如下命令重启Docker:
$systemctl daemon-reload
$systemctl restart docker
(2)设置Jenkins
以之前编写的SpringCloudServiceProvider工程为例,在Jenkins中新建一个任务,这个任务的作用就是编译Provider工程,并且把此工程的jar文件推送至镜像生成服务器,然后运行此服务器中的一个脚本,生成Provider工程的镜像并且推送至Harbor仓库。此工程的编译部分与之前介绍Jenkins生成jar文件相同,只要配置好工程名和路径即可,推送和运行脚本部分有一点需要注意,就是jar文件的文件夹要和脚本文件夹相同,如图20-22所示。
(3)镜像生成服务器配置
在Jenkins推送到的目录中,要准备好生成镜像的Dockerfile文件和可执行脚本provider_image.sh。Dockerfile文件的作用正如第19章所介绍,是镜像生成的配置;而provider_image.sh文件的作用是调用生成镜像的命令并推送镜像至Harbor。
Dockerfile文件配置如下:
FROM java:8
ADD SpringCloudServiceProvider-0.0.1-SNAPSHOT.jar/data/run/
EXPOSE 18010
WORKDIR/data/run/
ENTRYPOINT["java","-jar","SpringCloudServiceProvider-0.0.1-SNAPSHOT.jar","--spring.profiles. active=providerA"](www.xing528.com)
图20-22 设置Jenkins推送目的地及脚本
provider_start.sh文件配置如下:
#!/bin/sh
cd/data/javadevmap/Spring_Cloud/SpringCloudServiceProviderImage
Date_time=`date"+%F-%H-%M"`
docker build-t 172.17.238.239/springcloud/provider:0.0.1.${Date_time}.
docker login 172.17.238.239--username admin--password Harbor12345
docker push 172.17.238.239/springcloud/provider:0.0.1.${Date_time}
添加完文件后,记得执行chmod u+x provider_image.sh命令设置文件权限。
(4)Harbor仓库添加项目
在Harbor中,要先添加一个项目,用于承接推送到Harbor的镜像,此项目名称要和镜像工程名相同,这里创建项目名称为springcloud。由于Harbor的可视化页面操作起来较为简单,这里就不再演示。
(5)执行效果
在Jenkins中执行“立即构建”,然后观察构建进度,可以发现项目编译完成后执行了镜像生成,并且把镜像推送至Harbor仓库,在Harbor的镜像仓库中可以看到镜像文件列表,如图20-23、图20-24所示。
图20-23 Harbor仓库镜像
图20-24 Harbor仓库镜像文件
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。