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