SpringBoot 2.2.5 使用jib-maven-plu

作者: 天不生我小金 | 来源:发表于2020-10-03 20:39 被阅读0次

前言:该博客主要是记录自己学习的过程,方便以后查看,当然也希望能够帮到大家。

说明

Jib旨在让开发者使用他们熟悉的工具更轻松地将 Java 应用程序容器化。有以下优点:

  1. 简单。Jib 采用 Java 实现,并作为 Maven 或 Gradle 构建的一部分运行。你不需要维护 Dockerfile ,甚至无需创建包含所有依赖项的 JAR 包。
  2. 快速。Jib 利用镜像分层和注册表缓存来实现快速、增量构建。它读取你的构建配置,将应用分到不同的层中,只重新构建和推送发生变更的层。
  3. 可重现。Jib 支持根据 Maven 和 Gradle 的构建元数据进行声明式的容器镜像构建,只要输入保持不变,就可以通过配置重复创建相同的镜像。
  4. 不需要安装Docker环境,仅仅通过Java编译环境即可构建Docker容器镜像(并推送到镜像仓库),不需要Dockerfile,这在持续构建中减少一个环节,特别是对于开发人员来说,仅仅配置Maven或者Gradle文件即可,还是很友好的。

完整代码地址在结尾!!

第一步,在docker-hub或者阿里云上注册账号,并创建仓库,此处不多赘述,不懂请自行百度查询,如下

第二步,配置pom.xml文件加入配置,细节说明都有,如下

<plugin>
    <groupId>com.google.cloud.tools</groupId>
    <artifactId>jib-maven-plugin</artifactId>
    <version>2.4.0</version>
    <configuration>
        <!-- 拉取所需的基础镜像 - 这里的jdk8,是用于运行springboot项目 -->
        <from>
            <image>openjdk:8-jdk-alpine</image>
        </from>
        <!-- 最后生成的镜像配置 -->
        <to>
            <!-- push docer-hub官方仓库。用户名/镜像名:版本号 -->
            <image>xxx/${project.name}</image>
            <!-- 如果是阿里云的容器镜像仓库,则使用容器的配置 前缀/命名空间/仓库名 -->
            <!--<image>registry.cn-chengdu.aliyuncs.com/renbaojia/ctfo</image>-->
            <tags>
                <!--版本号-->
                <tag>${project.version}</tag>
            </tags>
            <auth>
                <!--在docker-hub或者阿里云上的账号和密码-->
                <username>xxx</username>
                <password>xxx</password>
            </auth>
        </to>
        <container>
            <!-- springboot项目的入口类 -->
            <mainClass>com.luoyu.docker.DockerApplication</mainClass>
            <useCurrentTimestamp>true</useCurrentTimestamp>
            <ports>
                <!-- 指定镜像端口 , 这里没用docfile的操作 -->
                <port>8082</port>
            </ports>
        </container>
    </configuration>
    <executions>
        <execution>
            <phase>package</phase>
            <goals>
                <goal>build</goal>
            </goals>
        </execution>
    </executions>
</plugin>

第三步,编写application.yml配置文件,如下:

server:
  port: 8082

spring:
  application:
    name: docker-demo-server

第四步,创建TestController类,如下

import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

/**
 * @Description:
 * @Author: luoyu
 * @Date: 2020/7/16 10:39 下午
 * @Version: 1.0.0
 */
@RestController
@RequestMapping("/test")
public class TestController {

    /**
     * @author jinhaoxun
     * @description 测试接口
     */
    @GetMapping(value = "/get", produces = "application/json; charset=UTF-8")
    public String getTest1() throws Exception {
        return "Hello";
    }
}

第五步,进入终端,在项目根路径下执行:mvn clean package -Dmaven.test.skip=true

说明:执行该命令会自动对项目进行打包,构建,并推送到远程仓库

第六步,验证,在docker-hub或者阿里云上,查看对应仓库是否已经有刚推送的镜像

第七步,使用docker命令拉取镜像并运行容器

docker run -dit --name docker-demo -p 8082:8082 xxx/docker-demo:1.0.0

第八步,浏览器访问:http://localhost:8082/test/get,成功访问则成功

完整代码地址:https://github.com/Jinhx128/springboot-demo
注:此工程包含多个module,本文所用代码均在docker-demo模块下

后记:本次分享到此结束,本人水平有限,难免有错误或遗漏之处,望大家指正和谅解,欢迎评论留言。

相关文章

网友评论

    本文标题:SpringBoot 2.2.5 使用jib-maven-plu

    本文链接:https://www.haomeiwen.com/subject/pxtguktx.html