Spring Cloud中使用jib进行docker部署的步骤详解

Spring Cloud中使用jib进行docker部署的步骤详解,第1张

SpringCloud中使用jib进行docker部署的步骤详解

本文主要介绍在SpringCloud中使用jib部署docker的详细步骤。本文以图文并茂的形式非常详细,对你的学习或工作有一定的参考价值。有需要的朋友可以参考一下。

JIB简介

Jib是Google开发的类库,可以直接构建Java应用的Docker和OCI映像。它以Maven和Gradle插件的形式提供。

有了Jib,Java开发人员可以使用他们熟悉的Java工具来构建容器。Jib是一个快速简单的容器映像构建工具,它负责将应用程序打包到容器映像中所需的所有步骤。它不需要你编写Dockerfile或者安装Docker,可以直接集成到Maven和Gradle中——只需要在构建中添加插件,就可以立刻容器化Java应用。

Jib开源地址:https://github.com/GoogleContainerTools/jib

码头工人正常施工流程

悬臂施工过程

集成悬臂

该项目是春云,版本霍克斯顿。SR1

要集成jib,只需要在pom中添加jib插件即可。

<plugin> <groupId>com.google.cloud.tools</groupId> <artifactId>jib-maven-plugin</artifactId> <version>${jib.version}</version> </plugin>

起重臂相关的完整配置

<properties> <!--jibdockerconfig--> <!--jib版本--> <jib.version>2.2.0</jib.version> <!--是否跳过jib打包--> <jib.skip>true</jib.skip> <!--仓库镜像名称--> <jib.repository.name>akk-system</jib.repository.name> <!--启动类--> <jib.main.class>com.akk.GatewayApplication</jib.main.class> <!--仓库登录用户名--> <REGISTRY_USERNAME>222222222222</REGISTRY_USERNAME> <!--仓库登录密码--> <REGISTRY_PASSWORD>111111111111</REGISTRY_PASSWORD> </properties> <plugins> <plugin> <groupId>com.google.cloud.tools</groupId> <artifactId>jib-maven-plugin</artifactId> <version>${jib.version}</version> <configuration> <skip>${jib.skip}</skip> <!--配置基础镜像--> <from> <image>openjdk:8-jre-alpine</image> </from> <!--配置推送地址,仓库名,镜像名--> <to> <image>registry.cn-hangzhou.aliyuncs.com/akk_java/${jib.repository.name}</image> <tags> <!--<tag>${jib.repository.name}</tag>--> <!--<tag>${version}</tag>--> </tags> <auth> <username>${REGISTRY_USERNAME}</username> <password>${REGISTRY_PASSWORD}</password> </auth> </to> <!--私服是http不是https,默认jib不推送到非https的私服,私服添加,公服不添加--> <!--<allowInsecureRegistries>true</allowInsecureRegistries>--> <container> <mainClass>${jib.main.class}</mainClass> <labels> <name>${artifactId}</name> </labels> </container> </configuration> <!--绑定到mavenlifecicle--> <!--<executions>--> <!--<execution>--> <!--<phase>package</phase>--> <!--<goals>--> <!--<goal>build</goal>--> <!--</goals>--> <!--</execution>--> <!--</executions>--> </plugin> </plugins>

参数描述:
${jib.version}jib版本:可以自己选择
${jib.skip}Skipjib:jib插件放在根目录下的pom中,所以项目的所有模块都会执行jib *** 作。如果项目的公共依赖模块不需要打包,可以重新定义这个属性。跳过jib的推送仓库名称
${jib.repository.name}镜像:仓库名称
${version}镜像版本:推送镜像的版本
${REGISTRY_USERNAME}镜像仓库用户名:私有仓库的登录帐户
${REGISTRY_Passwordofmirror仓库的登录密码
${jib.main.class}项目模块启动类:项目模块的启动类,Springboot启动类。

form标签定义了基本图像,它基于openjdk:8-jre-alpine。其他的都可以。to标签定义了编译后的图片推送信息,image定义了推送的图片名称信息,tags推送图片的标签,通过标签可以拉取指定的图片。Auth定义私有仓库的登录信息。容器定义了镜像的内容信息,由mainClass启动的mainclass。Labels应用元数据键值对,类似于docker的标签。以下执行绑定了命令。在这里,jib的build命令被绑定到maven的package命令。当mvn包运行时,jib构建将自动执行。(更多配置标签请参考https://github.com/Googlecontainertools/jib/tree/master/jib-maven-plugin)

此时,你可以在idea的maven菜单中看到jib插件相关内容:

例如:网关模块(需要打包镜像),pom配置如下

<?xmlversion="1.0"encoding="UTF-8"?> <projectxmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0http://maven.apache.org/xsd/maven-4.0.0.xsd"> <parent> <artifactId>akk-system</artifactId> <groupId>com.akk</groupId> <version>0.0.1-SNAPSHOT</version> </parent> <modelVersion>4.0.0</modelVersion> <artifactId>gateway</artifactId> <properties> <!--jibdockerconfig--> <jib.version>2.2.0</jib.version> <jib.skip>false</jib.skip> <jib.repository.name>akk-gateway</jib.repository.name> <jib.main.class>com.akk.GatewayApplication</jib.main.class> </properties> <dependencies> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-gateway</artifactId> </dependency> <dependency> <groupId>com.github.xiaoymin</groupId> <artifactId>knife4j-spring-boot-starter</artifactId> </dependency> </dependencies> </project>

通用依赖包pom(无需打包图像):

<?xmlversion="1.0"encoding="UTF-8"?> <projectxmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <parent> <artifactId>akk-system</artifactId> <groupId>com.akk</groupId> <version>0.0.1-SNAPSHOT</version> </parent> <artifactId>common</artifactId> <version>0.0.1-SNAPSHOT</version> <properties> <!--jibdockerconfig--> <jib.version>2.2.0</jib.version> <jib.skip>true</jib.skip> <jib.repository.name>akk-system</jib.repository.name> <jib.image.name>akk-system</jib.image.name> </properties> <dependencies> <!--依赖信息--> </dependencies> </project>

属性涵盖了臂架的相关参数配置。

包图像

运行mvn包jib:dockerBuild到包。

包完成后,检查本地docker镜像(jib:dockerBuild命令不会上传镜像,但是jib:build命令会上传镜像)

打包并上传图像

运行mvnpackagejib:buildtopackage并上传。
登录docker私仓。

dockerlogin--username=username--password=passwordregistry.cn-hangzhou.aliyuncs.com

拉镜像

dockerpullregistry.cn-hangzhou.aliyuncs.com/akk_java/akk-gateway:latest

Docker部署项目

微项目部署,模块多,一般是分布式集群环境,手工部署比较麻烦。可以使用Jenkins类似的自动化部署工具。使用Jenkins打包并上传映像后,登录到远程服务器并执行脚本来启动它。比如:

#!/bin/bash #登录docker仓库 dockerlogin--username=username--password=passwordregistry.cn-hangzhou.aliyuncs.com #停止运行的容器 dockerps|grepakk_java|awk'{print$1}'|xargsdockerstop #删除容器 dockerps-a-q|grepakk_java|awk'{print$1}'|xargsdockerrm #查询镜像文件并删除 dockerimages|grepakk_java|awk'{print$3}'|xargsdockerrmi #拉取镜像 dockerpullregistry.cn-hangzhou.aliyuncs.com/akk_java/akk-user:latest dockerpullregistry.cn-hangzhou.aliyuncs.com/akk_java/akk-gateway:latest dockerpullregistry.cn-hangzhou.aliyuncs.com/akk_java/akk-task:latest dockerpullregistry.cn-hangzhou.aliyuncs.com/akk_java/akk-store:latest dockerpullregistry.cn-hangzhou.aliyuncs.com/akk_java/akk-pay:latest dockerpullregistry.cn-hangzhou.aliyuncs.com/akk_java/akk-app-api:latest dockerpullregistry.cn-hangzhou.aliyuncs.com/akk_java/akk-sso-auth:latest dockerpullregistry.cn-hangzhou.aliyuncs.com/akk_java/akk-seata:latest

映像拉回后,只需执行dockerrun命令来启动docker。

关于SpringCloud中使用jib部署docker的详细步骤,本文到此结束。有关在SpringCloud中部署Docker的更多信息,请搜索我们以前的文章或继续浏览下面的相关文章。希望大家以后能多多支持我们!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/774271.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-03
下一篇 2022-05-03

发表评论

登录后才能评论

评论列表(0条)

保存