Transformez facilement les applications Java en Docker avec Jib

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éation de projet Maven

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.

Application Java

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

Transformez facilement les applications Java en Docker avec Jib
Installer Java avec Docker basé sur Ubuntu 16.04
Surveillez les applications Java avec jolokia et hawtio
Application Java CICS-Run - (3) Gestion de build avec Gradle
Application Java CICS-Run - (2) Gestion de build avec Maven
Créer des applications Java avec IBM Cloud Functions
Transformez facilement les applications Java en conteneurs Docker avec Jib ~ Construisez avec gradle et enregistrez-vous dans le référentiel local
/ n \ n docker java
[Memo] Créez facilement un environnement CentOS 8 avec Docker
Rendre l'environnement SpringBoot1.5 + Gradle4.4 + Java8 + Docker compatible avec Java11
Changez facilement de version de Java avec un alias sur macOS
Créez et testez des applications Java + Gradle avec Wercker
Préparer un environnement de scraping avec Docker et Java
Opérations de conteneur Docker avec l'API Docker-Client pour Java
CI l'architecture des applications Java / Kotlin avec ArchUnit
Changer de siège avec Java
Installez Java avec Ansible
Lancez MariaDB avec Docker
Exploser Docker avec WSL2
Utiliser Puphpeteer avec Docker
Téléchargement confortable avec JAVA
Changer java avec direnv
Exploitez Emby avec Docker
Exécutez Payara avec Docker
[Note] Créez un environnement Java à partir de zéro avec docker
Téléchargement Java avec Ansible
Essayez de vous connecter à l'émulateur AzureCosmosDB pour Docker avec Java
Prise en charge de Java 10 Docker
Raclons avec Java! !!
Construire Java avec Wercker
PHP jetable avec Docker
Conversion Endian avec JAVA
Java: démarrez WAS avec Docker et déployez votre propre application
[Java] Exemple de projet de développement d'applications Web avec Spring Boot
(Java) BDD facile avec Spectrum?
Utiliser des couches Lambda avec Java
Créer un multi-projet Java avec Gradle
Premiers pas avec Java Collection
Utiliser GDAL avec Python avec Docker
Configuration Java avec Spring MVC
Authentification de base avec Java 11 HttpClient
Expérimentons l'expansion en ligne Java
Exécuter un lot avec docker-compose avec Java batch
[Template] Connexion MySQL avec Java
Réécrire Java try-catch avec facultatif
Installez Java 7 avec Homebrew (cask)
[Java] Communication JSON avec jackson
Déployer avec EC2 / Docker / Laravel
Exécutez TAO Core avec Docker
Java pour jouer avec Function