[JAVA] Stellen Sie sich die Spring Boot-App mit dem Jib-Maven-Plugin vor und starten Sie sie mit Docker

Einführung

Dieser Artikel ist der 23. Tag von Java Adventskalender 2019 - Qiita. Benutzt ihr Container? ?? Mit dem von Google veröffentlichten Jib-Maven-Plugin können Sie eine in Java geschriebene App ganz einfach in ein Docker-Image verwandeln. Dieses Mal werde ich versuchen, mit Spring Boot / Maven ein Image einer Spring Boot-Anwendung zu erstellen und einen Container zu starten (ich wollte unbedingt eine AWS-Bereitstellung durchführen, habe aber aufgegeben, weil ich keine Zeit habe).

Umgebung

Erstellen Sie eine Spring Boot-Anwendung

Erstellen Sie ein mit SpringBoot / Maven erstelltes Projekt. Mit Spring Initializr von Spring können Sie ganz einfach eine Anwendung erstellen. Klicken Sie hier für die Verwendung (ich werde die Verwendung später aktualisieren)

Beispiel-Controller hinzufügen

Da wir dieses Mal eine Webanwendung erstellen, werden wir einen Beispiel-Controller und HTML hinzufügen. 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>

Plug-In einrichten

Fügen Sie das folgende Plug-In zum POM der oben erstellten Spring Boot-Anwendung hinzu. 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>

Build ausführen

Bei laufendem Docker mvn compile jib:dockerBuild Durch Ausführen wird der Image-Build der Spring Boot-Anwendung ausgeführt. Wenn Ihnen unter Windows usw. die Administratorrechte entzogen wurden, funktioniert dies möglicherweise nicht ordnungsgemäß. In diesem Fall müssen Sie vorübergehend Administratorrechte gewähren. Wenn der Build erfolgreich war, können Sie sehen, dass sich das erstellte Image in der Docker-Image-Liste befindet. docker images

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

Starten Sie den Docker-Container

Erstellen Sie einen Docker-Container basierend auf dem oben erstellten Image und führen Sie ihn aus. Durch Eingabe des folgenden Befehls können Sie den lokalen 8080-Port dem Docker 8080 zuordnen und über den Browser darauf zugreifen, um ihn zu überprüfen. 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)

Wenn Sie tatsächlich auf localhost zugreifen: 8080. .. .. スクリーンショット 2019-12-18 23.14.07.png

Sie können sehen, dass es begonnen hat.

Am Ende

Ich konnte ein einfaches Image der Spring Boot-Anwendung erstellen und den Container starten. Dies ist jedoch immer noch eine lokale Geschichte. Sobald ich Zeit habe, möchte ich zusammenfassen, wie sie in der Containerausführungsumgebung von AWS, GCP und Azure bereitgestellt werden soll (ursprünglich die Hauptumgebung ...). Der diesmal erstellte Quellcode wird auf Github hochgeladen.

Recommended Posts

Stellen Sie sich die Spring Boot-App mit dem Jib-Maven-Plugin vor und starten Sie sie mit Docker
Spring Boot beginnend mit Docker
Vielleicht funktioniert es! Erstellen Sie ein Bild mit Docker und teilen Sie es!
Erstellen Sie eine App mit Spring Boot 2
Erstellen Sie eine App mit Spring Boot
Erstellen Sie mit Gradle ein Spring Boot + Docker-Image
HTTPS mit Spring Boot und Let's Encrypt
Starten Sie die Entwicklung von Webanwendungen mit Spring Boot
Asynchrone Verarbeitung mit Spring Boot unter Verwendung von @Async
Erstellen Sie mit Spring Boot eine einfache Such-App
So verkleinern Sie das Spring Boot Docker-Image
Erstellen Sie mit Docker eine Spring Boot-Entwicklungsumgebung
Testen von JPA-Entitäten und -Repositorys mit Spring Boot @DataJpaTest
[Hinweis] Festlegen der Datei bei Verwendung von Logback mit Spring Boot
Wechseln Sie die Umgebung mit Spring Boot application.properties und @ Profile-Annotation
Versuchen Sie, OpenID Connect mit Keycloak (Spring Boot-Anwendung) zu verwenden.
Verwendungshinweis zu Spring Security: Zusammenarbeit mit Spring MVC und Boot
[JUnit 5-kompatibel] Schreiben Sie einen Test mit JUnit 5 mit Spring Boot 2.2, 2.3
Spring Boot mit Spring Security Filter-Einstellungen und Suchtpunkten
Erstellen Sie Restapi mit Spring Boot (bis zum Ausführen der App)
Bis Sie mit der Entwicklung mit Spring Boot in Eclipse 1 beginnen
Bis Sie mit der Entwicklung mit Spring Boot in Eclipse 2 beginnen
Versuch, SSR Vue.js mit Spring Boot und GraalJS zu verwenden
Erstellen einer Datenbankumgebung mit Docker in Spring Boot (IntellJ)
Verbinden Sie Spring Boot und Angular typsicher mit OpenAPI Generator
Mit Spring Boot herunterladen
Hallo Welt (Konsolen-App) mit Apache Camel + Spring Boot 2
Behandeln Sie die Java 8-Datums- und Uhrzeit-API mit Thymeleaf mit Spring Boot
Implementieren Sie die REST-API mit Spring Boot und JPA (Application Layer).
Implementieren Sie die REST-API mit Spring Boot und JPA (Infrastructure Layer).
Registrieren Sie Ihr eigenes Docker-Image in ECR mithilfe der AWS CLI
Verwechseln Sie Docker mit Pokemon und erleichtern Sie das Anhängen
Bis INSERT und SELECT für Postgres mit Spring Boot und Thymianblatt
Stellen Sie mit spring boot + spring jpa eine Verbindung zur Datenbank her und führen Sie die CRUD-Operation durch
Implementieren Sie die REST-API mit Spring Boot und JPA (Domain Layer Edition).
Java: Starten Sie WAS mit Docker und stellen Sie Ihre eigene Anwendung bereit
Domänengesteuerte Entwicklung mit Java und Spring Boot-Layer und Modulabteilung
Ich habe versucht, mit Swagger mit Spring Boot zu beginnen
8 Dinge, die mit Spring Boot und JPA in die DB eingefügt werden müssen
Generieren Sie mit Spring Boot einen Barcode
Hallo Welt mit Spring Boot
Implementieren Sie GraphQL mit Spring Boot
Beginnen Sie mit Spring Boot
Hallo Welt mit Spring Boot!
Führen Sie LIFF mit Spring Boot aus
SNS-Login mit Spring Boot
Datei-Upload mit Spring Boot
Spring Boot beginnt mit dem Kopieren
Verwenden von Mapper mit Java (Spring)
Hallo Welt mit Spring Boot
Setzen Sie Cookies mit Spring Boot
Verwenden Sie Spring JDBC mit Spring Boot
Aufbau der Docker x Spring Boot-Umgebung
Modul mit Spring Boot hinzufügen
Erste Schritte mit Spring Boot
Versuchen Sie es mit Spring Boot Security
Erstellen Sie mit Spring Boot einen Mikrodienst
Mail mit Spring Boot verschicken