SpringBoot 2.2.5 使用jib-maven-plugin构建Docker镜像,并推送到Docker-Hub或者阿里云容器仓库

说明

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模块下

  • 10
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值