说明
Jib旨在让开发者使用他们熟悉的工具更轻松地将 Java 应用程序容器化。有以下优点:
- 简单。Jib 采用 Java 实现,并作为 Maven 或 Gradle 构建的一部分运行。你不需要维护 Dockerfile ,甚至无需创建包含所有依赖项的 JAR 包。
- 快速。Jib 利用镜像分层和注册表缓存来实现快速、增量构建。它读取你的构建配置,将应用分到不同的层中,只重新构建和推送发生变更的层。
- 可重现。Jib 支持根据 Maven 和 Gradle 的构建元数据进行声明式的容器镜像构建,只要输入保持不变,就可以通过配置重复创建相同的镜像。
- 不需要安装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