Jib wurde am 11. Juli 2018 von Google veröffentlicht. Jib ist ein OSS, das Java-Anwendungen automatisch in Docker-Container umwandelt. Es wird als Plug-In für Maven und Gradle veröffentlicht, und Sie können es einfach verwenden, indem Sie Jib einfach als Plug-In registrieren. Außerdem müssen Sie selbst keine Docker-Datei schreiben, und Jib erstellt das Bild automatisch für Sie. Bisher habe ich Dockerfile und docker-compose.yml geschrieben, um das Image zu erstellen, aber es ist sehr einfach, da das Image automatisch erstellt werden kann, indem es einfach mit mvn oder gradle erstellt wird. In diesem Artikel werde ich die Spring-Anwendung (Hello World) vom Docker in die Anwendung einführen, indem ich sie mit dem Maven-Projekt erstelle.
Erstellen Sie zunächst eine Frühlingsvorlage mit SPRING INITIALIZR.
pom.xml
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="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.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.example.jib</groupId>
<artifactId>jibDemo</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>
<name>jibDemo</name>
<description>Demo project for Spring Boot</description>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.0.3.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
Fügen Sie als Nächstes die Fock-Einstellungen hinzu.
<!-- Jib -->
<plugin>
<groupId>com.google.cloud.tools</groupId>
<artifactId>jib-maven-plugin</artifactId>
<version>0.9.6</version>
<configuration>
<to>
<image>hellojib</image>
</to>
</configuration>
</plugin>
Fügen Sie das Jib-Plug-In zum Build-Teil hinzu.
Sie müssen lediglich mit Eclipse oder Intellij importieren.
Auf der Anwendungsseite diesmal nur Hello World
HelloController
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
@Controller
public class HelloController {
@RequestMapping("/")
public String sayHello(Model model) {
model.addAttribute("message", "Hello World!!!");
return "index";
}
}
index.html
<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
<meta charset="UTF-8">
<title>Hello Spring</title>
</head>
<body>
<span th:text="${message}">Hello world</span>
</body>
</html>
Docker Image Build Erstellen Sie ein Docker-Image in Jib
$ mvn compile jib:build
Bei Erfolg wird ein Docker-Image generiert.
$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
hellojib latest 16ab4943a4d8 48 years ago 138MB
Der Docker-Image-Name kann in der Konfiguration in pom.xml festgelegt werden. Dieses Mal ist Hallojib im Bild gesetzt.
<configuration>
<to>
<image>hellojib</image>
</to>
</configuration>
Danach können Sie eine Java-Anwendung mit Docker wie "Docker ausführen --name hellojib -d -p 8080: 8080 hellojibD" starten.
Recommended Posts