[JAVA] Image de l'application Spring Boot à l'aide de jib-maven-plugin et lancez-la avec Docker

introduction

Cet article est le 23e jour du Calendrier de l'Avent Java 2019 - Qiita. Utilisez-vous des conteneurs? ?? Vous pouvez facilement transformer une application écrite en Java en image Docker en utilisant le plugin jib-maven publié par Google. Cette fois, je vais essayer de créer une image d'une application Spring Boot à l'aide de Spring Boot / Maven et lancer un conteneur (je voulais vraiment faire un déploiement AWS, mais j'ai abandonné car je n'ai pas le temps)

environnement

Créer une application Spring Boot

Créez un projet construit avec SpringBoot / Maven. Vous pouvez facilement créer une application en utilisant Spring Initializr fourni par Spring. Cliquez ici pour savoir comment l'utiliser (je mettrai à jour l'utilisation plus tard)

Ajouter un contrôleur d'échantillon

Puisque nous allons créer une application Web cette fois, nous ajouterons un exemple de contrôleur et html. IndexController

@Controller
public class IndexController {

	@GetMapping("/")
	public ModelAndView get(ModelAndView mav) {
		mav.setViewName("index");
		return mav;
	}
}

index.html

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"
	xmlns:th="http://www.thymeleaf.org">
<head>
<meta charset="UTF-8">
<title>JibSampleApp</title>
<!-- Latest compiled and minified CSS -->
<link rel="stylesheet"
	href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css"
	integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u"
	crossorigin="anonymous">

<!-- Optional theme -->
<link rel="stylesheet"
	href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap-theme.min.css"
	integrity="sha384-rHyoN1iRsVXV4nD0JutlnGaslCJuC7uwjduW9SVrLvRYooPp2bWYgmgJQIXwl/Sp"
	crossorigin="anonymous">

<!-- Latest compiled and minified JavaScript -->
<script
	src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"
	integrity="sha384-Tc5IQib027qvyjSMfHjOMaLkfuWVxZxUPnCJA7l2mCWNIpG9mGCD8wGNIcPD7Txa"
	crossorigin="anonymous"></script>

</head>
<body>
	<div class="container">
		<div class="row">
			<div class="jumbotron">
				<h1>JibSampleApp</h1>
				<p>this app is JibSampleApp</p>
			</div>
			<div class="panel panel-success">
				<div class="panel-heading">blank</div>
				<div class="panel-body"></div>
			</div>
		</div>
	</div>
</body>
</html>

Configurer le plug-in

Ajoutez le plug-in suivant au pom de l'application Spring Boot créée ci-dessus. pom.xml

<plugin>
	<groupId>com.google.cloud.tools</groupId>
	<artifactId>jib-maven-plugin</artifactId>
	<version>1.8.0</version>
	<configuration>
		<to>
			<image>jibsampleimage</image>
		</to>
	</configuration>
</plugin>

exécuter la construction

Avec Docker en cours d'exécution mvn compile jib:dockerBuild En exécutant, la construction d'image de l'application Spring Boot sera exécutée. Si vous avez été privé de privilèges d'administrateur sur Windows, etc., il se peut que cela ne fonctionne pas correctement. Dans ce cas, vous devez temporairement accorder des privilèges d'administrateur. Si la génération réussit, vous pouvez voir que l'image créée se trouve dans la liste d'images Docker. docker images

REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
jibsampleimage      latest              bcb3c6749044        49 years ago        161MB

Démarrer le conteneur Docker

Créez un conteneur Docker basé sur l'image créée ci-dessus et exécutez-le. En entrant la commande suivante, vous pouvez mapper le port 8080 local au Docker 8080 et y accéder à partir de votre navigateur pour le vérifier. docker run -p 8080:8080 -it jibsampleimage

  .   ____          _            __ _ _
 /\\ / ___'_ __ _ _(_)_ __  __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
 \\/  ___)| |_)| | | | | || (_| |  ) ) ) )
  '  |____| .__|_| |_|_| |_\__, | / / / /
 =========|_|==============|___/=/_/_/_/
 :: Spring Boot ::        (v2.1.9.RELEASE)

2019/12/18 14:11:53.177 [main] INFO   c.a.j.s.JibSampleApp Starting JibSampleApp on be8d974734e4 with PID 1 (/app/classes started by root in /)
2019/12/18 14:11:53.189 [main] INFO   c.a.j.s.JibSampleApp No active profile set, falling back to default profiles: default
2019/12/18 14:11:56.123 [main] WARN   o.m.s.m.ClassPathMapperScanner No MyBatis mapper was found in '[com.atu496.jib.sample]' package. Please check your configuration.
2019/12/18 14:11:58.065 [main] INFO   o.s.b.w.e.t.TomcatWebServer Tomcat initialized with port(s): 8080 (http)
2019/12/18 14:11:58.166 [main] INFO   o.a.c.h.Http11NioProtocol Initializing ProtocolHandler ["http-nio-8080"]
2019/12/18 14:11:58.213 [main] INFO   o.a.c.c.StandardService Starting service [Tomcat]
2019/12/18 14:11:58.217 [main] INFO   o.a.c.c.StandardEngine Starting Servlet engine: [Apache Tomcat/9.0.26]
2019/12/18 14:11:58.535 [main] INFO   o.a.c.c.C.[.[.[/] Initializing Spring embedded WebApplicationContext
2019/12/18 14:11:58.537 [main] INFO   o.s.w.c.ContextLoader Root WebApplicationContext: initialization completed in 5194 ms
2019/12/18 14:11:59.277 [main] INFO   o.s.s.c.ThreadPoolTaskExecutor Initializing ExecutorService 'applicationTaskExecutor'
2019/12/18 14:11:59.532 [main] INFO   o.s.b.a.w.s.WelcomePageHandlerMapping Adding welcome page template: index
2019/12/18 14:12:00.865 [main] INFO   o.a.c.h.Http11NioProtocol Starting ProtocolHandler ["http-nio-8080"]
2019/12/18 14:12:01.033 [main] INFO   o.s.b.w.e.t.TomcatWebServer Tomcat started on port(s): 8080 (http) with context path ''
2019/12/18 14:12:01.050 [main] INFO   c.a.j.s.JibSampleApp Started JibSampleApp in 9.135 seconds (JVM running for 10.809)

Lorsque vous accédez réellement à localhost: 8080. .. .. スクリーンショット 2019-12-18 23.14.07.png

Vous pouvez voir que cela a commencé.

À la fin

J'ai pu créer une image simple de l'application Spring Boot et démarrer le conteneur. Cependant, comme il s'agit toujours d'une histoire locale, je prévois de résumer comment le déployer dans l'environnement d'exécution de conteneur d'AWS, GCP et Azure dès que j'en ai le temps (c'était à l'origine le principal ...). Le code source créé cette fois-ci est téléchargé sur Github.

Recommended Posts

Image de l'application Spring Boot à l'aide de jib-maven-plugin et lancez-la avec Docker
Spring Boot à partir de Docker
Peut-être que ça marche! Créez une image avec Docker et partagez-la!
Créez une application avec Spring Boot 2
Créez une application avec Spring Boot
Créer une image Spring Boot + Docker avec Gradle
HTTPS avec Spring Boot et Let's Encrypt
Démarrez le développement d'applications Web avec Spring Boot
Traitement asynchrone avec Spring Boot en utilisant @Async
Créez une application de recherche simple avec Spring Boot
Comment réduire l'image de Spring Boot Docker
Créer un environnement de développement Spring Boot avec docker
Test des entités et référentiels JPA à l'aide de Spring Boot @DataJpaTest
[Note] Fichier de configuration lors de l'utilisation de Logback avec Spring Boot
Changer d'environnement avec Spring Boot application.properties et l'annotation @Profile
Essayez d'utiliser OpenID Connect avec Keycloak (application Spring Boot)
Mémo d'utilisation de Spring Security: coopération avec Spring MVC et Boot
[Compatible JUnit 5] Ecrire un test en utilisant JUnit 5 avec Spring boot 2.2, 2.3
Spring Boot avec les paramètres du filtre de sécurité Spring et les points addictifs
Créer Restapi avec Spring Boot (jusqu'à l'exécution de l'application)
Jusqu'à ce que vous commenciez à développer avec Spring Boot dans eclipse 1
Jusqu'à ce que vous commenciez à développer avec Spring Boot dans eclipse 2
Tentative de SSR Vue.js avec Spring Boot et GraalJS
Création d'un environnement de base de données avec Docker dans Spring Boot (IntellJ)
Connectez Spring Boot et Angular en toute sécurité avec OpenAPI Generator
Télécharger avec Spring Boot
Hello World (application console) avec Apache Camel + Spring Boot 2
Gérez l'API de date et d'heure Java 8 avec Thymeleaf avec Spring Boot
Implémenter l'API REST avec Spring Boot et JPA (Application Layer)
Implémenter l'API REST avec Spring Boot et JPA (couche d'infrastructure)
Enregistrez votre propre image Docker dans ECR à l'aide de l'AWS CLI
Rendre Docker déroutant avec Pokemon et le rendre plus facile à attacher
Jusqu'à INSERT et SELECT sur Postgres avec botte de printemps et feuille de thym
Connectez-vous à la base de données avec spring boot + spring jpa et effectuez l'opération CRUD
Implémenter l'API REST avec Spring Boot et JPA (Domain Layer Edition)
Java: démarrez WAS avec Docker et déployez votre propre application
Développement piloté par domaine avec Java et Spring Boot-Layer et division de modules
J'ai essayé de démarrer avec Swagger en utilisant Spring Boot
8 choses à insérer dans DB en utilisant Spring Boot et JPA
Générer un code à barres avec Spring Boot
Hello World avec Spring Boot
Implémenter GraphQL avec Spring Boot
Démarrez avec Spring Boot
Bonjour tout le monde avec Spring Boot!
Exécutez LIFF avec Spring Boot
Connexion SNS avec Spring Boot
Téléchargement de fichiers avec Spring Boot
Spring Boot commençant par copie
Utilisation de Mapper avec Java (Spring)
Hello World avec Spring Boot
Définir des cookies avec Spring Boot
Utiliser Spring JDBC avec Spring Boot
Construction de l'environnement Docker × Spring Boot
Ajouter un module avec Spring Boot
Premiers pas avec Spring Boot
Essayez d'utiliser Spring Boot Security
Créer un micro service avec Spring Boot
Envoyer du courrier avec Spring Boot