Créez un environnement de développement Java avec Spring Boot avec Docker. Utilisez Java 11 et gradle.
Jusqu'au point où Hello World! Est affiché. (Mise à jour: méthode de débogage à distance ajoutée)
https://github.com/tomoyuki-mikami/spring-boot-docker
Méthode d'exécution
$ cd docker
$ docker-compose up -d
MacOS Catalina 10.15.2 Docker for Mac 2.1.0.5 IntelliJ IDEA Ultimate 2019.3.1 OpenJDK 11 (installé avec homebrew)
https://start.spring.io/ Si vous faites la même sélection ici et Générer, il sera téléchargé sous forme de zip, alors utilisez-le.
Modifiez Application.java sous src / main / java / com.mika.app
Application.java
package com.mika.app;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
@SpringBootApplication
public class Application {
@RequestMapping("/")
String Index() {
return "Hello World!";
}
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
Essayez de l'exécuter sur IntelliJ à ce stade → Échoue probablement.
Appuyez sur le bouton d'exécution à côté de la classe publique Application {.
J'ai besoin de commenter car je mets trop de choses dans les dépendances et cela fonctionne en vain.
build.gradle
dependencies {
// implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
// implementation 'org.springframework.boot:spring-boot-starter-security'
// implementation 'org.springframework.boot:spring-boot-starter-thymeleaf'
implementation 'org.springframework.boot:spring-boot-starter-web'
compileOnly 'org.projectlombok:lombok'
developmentOnly 'org.springframework.boot:spring-boot-devtools'
// runtimeOnly 'mysql:mysql-connector-java'
// annotationProcessor 'org.springframework.boot:spring-boot-configuration-processor'
annotationProcessor 'org.projectlombok:lombok'
testImplementation('org.springframework.boot:spring-boot-starter-test') {
exclude group: 'org.junit.vintage', module: 'junit-vintage-engine'
}
testImplementation 'org.springframework.restdocs:spring-restdocs-mockmvc'
testImplementation 'org.springframework.security:spring-security-test'
}
Maintenant, recommencez Affichez http: // localhost: 8080 et confirmez que Hello World est affiché. Après confirmation, arrêtez avec le bouton d'arrêt.
Créez un répertoire docker et créez Dockerfile et docker-compose.yml en dessous La raison d'utiliser docker-compose est que nous prévoyons de construire MySQL et nginx ici à l'avenir.
Dockerfile
FROM openjdk:11
ENV APP_ROOT /app
COPY . $APP_ROOT
WORKDIR $APP_ROOT
ENTRYPOINT ["sh", "./gradlew", "bootRun"]
docker-compose.yml
version: '3'
services:
web:
build:
#Spécifiez le chemin requis pour copier l'application dans le Dockerfile
context: ../
#L'emplacement du Dockerfile vu du chemin de contexte
dockerfile: docker/Dockerfile
volumes:
# :La partie gauche s'adapte à votre environnement
- ~/Dev/java/spring-boot:/app
ports:
- "8080:8080"
$ cd docker
$ docker-compose up
Confirmez qu'il est démarré et confirmez que http: // localhost: 8080 s'affiche à nouveau.
HotDeploy Puisque nous utilisons spring-boot-devtools, HotDeploy est appliqué. Essayez de changer les caractères dans Hello World dans Application.java Vous pouvez voir Java redémarrer après quelques secondes (à partir du journal docker-compose up) Lorsque vous rechargez le navigateur, vous pouvez voir que les caractères ont changé.
Puisque je veux définir un point d'arrêt en développement et l'arrêter, j'ai défini le débogage à distance. Tout d'abord, ouvrez Exécuter → Modifier les configurations ... dans le menu IntelliJ. Sélectionnez Télécommande à partir du bouton + en haut à gauche. Avec les paramètres suivants, appuyez sur OK pour fermer.
build.gradle
bootRun {
// for remote debug
jvmArgs "-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=*:5005"
}
Comme le port 5005 est utilisé pour le débogage à distance, il est décrit.
docker-compose.yml
ports:
- "8080:8080"
# for remote debug
- "5005:5005"
Faites à nouveau docker-comose et vérifiez qu'il est en état de veille.
web_1 | > Task :bootRun
web_1 | Listening for transport dt_socket at address: 5005
Mettre un point d'arrêt dans Hello World dans Application.java
Si vous accédez à http: // localhost: 8080, vous pouvez voir qu'il s'arrête à cet emplacement.
Pour le moment, j'ai résumé comment le construire facilement.
Recommended Posts