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)
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)
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>
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>
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
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. .. ..
Vous pouvez voir que cela a commencé.
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