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).
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)
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>
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>
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
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. .. ..
Sie können sehen, dass es begonnen hat.
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