Jib a été publié par Google le 11 juillet 2018. Jib est un OSS qui transforme automatiquement les applications Java en conteneurs Docker. Il est publié en tant que plug-in pour Maven et Gradle, et vous pouvez facilement l'utiliser en enregistrant simplement Jib en tant que plug-in. De plus, vous n'avez pas à écrire vous-même un Dockerfile, Jib créera automatiquement l'image pour vous. Jusqu'à présent, j'écrivais Dockerfile et docker-compose.yml pour construire l'image, mais c'est très facile car l'image peut être construite automatiquement simplement en construisant avec mvn ou gradle. Dans cet article, je vais vous présenter pour créer une application Spring (Hello world) avec le projet Maven et voir l'application depuis le docker.
Créez d'abord un modèle Spring avec 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>
Ensuite, ajoutez les paramètres Jib.
<!-- 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>
Ajoutez le plug-in Jib à la partie de construction.
Tout ce que vous avez à faire est d'importer avec eclipse ou Intellij.
Côté application, seulement Hello World cette fois
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 Créer une image Docker dans Jib
$ mvn compile jib:build
En cas de succès, une image Docker sera générée.
$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
hellojib latest 16ab4943a4d8 48 years ago 138MB
Le nom de l'image Docker peut être défini dans la configuration dans pom.xml. Cette fois, hellojib est mis en image.
<configuration>
<to>
<image>hellojib</image>
</to>
</configuration>
Après cela, vous pouvez démarrer l'application Java avec Docker comme `` docker run --name hellojib -d -p 8080: 8080 hellojibD ''.
Recommended Posts