Erstellen Sie mit Spring Boot mit Docker eine Java-Entwicklungsumgebung. Verwenden Sie Java 11 und gradle.
Bis zu dem Punkt, an dem Hello World! Angezeigt wird. (Update: Remote-Debugging-Methode hinzugefügt)
https://github.com/tomoyuki-mikami/spring-boot-docker
Ausführungsmethode
$ 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 (installiert mit Homebrew)
https://start.spring.io/ Wenn Sie hier die gleiche Auswahl treffen und "Generieren", wird sie als Zip heruntergeladen. Verwenden Sie diese Option.
Ändern Sie Application.java unter 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);
}
}
Versuchen Sie es zu diesem Zeitpunkt auf IntelliJ auszuführen → Scheitert wahrscheinlich. Drücken Sie die Run-Taste neben der öffentlichen Klasse Application {.
Ich muss auskommentieren, weil ich zu viele Dinge in Abhängigkeiten stecke und es vergebens funktioniert.
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'
}
Jetzt nochmal laufen Zeigen Sie http: // localhost: 8080 an und bestätigen Sie, dass Hello World angezeigt wird. Stoppen Sie nach der Bestätigung mit der Stopp-Taste.
Erstellen Sie ein Docker-Verzeichnis und erstellen Sie Dockerfile und Docker-Compose.yml darunter Der Grund für die Verwendung von Docker-Compose ist, dass wir planen, hier in Zukunft MySQL und Nginx zu erstellen.
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:
#Geben Sie den Pfad an, der zum Kopieren der App in der Docker-Datei erforderlich ist
context: ../
#Der Speicherort der Docker-Datei im Kontextpfad
dockerfile: docker/Dockerfile
volumes:
# :Der linke Teil passt zu Ihrer Umgebung
- ~/Dev/java/spring-boot:/app
ports:
- "8080:8080"
$ cd docker
$ docker-compose up
Vergewissern Sie sich, dass es gestartet wurde, und bestätigen Sie, dass http: // localhost: 8080 erneut angezeigt wird.
HotDeploy Da wir Spring-Boot-Devtools verwenden, wird HotDeploy angewendet. Versuchen Sie, die Zeichen in Hello World in Application.java zu ändern Sie können sehen, dass Java nach einigen Sekunden neu gestartet wird (aus dem Docker-Compose-Up-Protokoll). Wenn Sie den Browser neu laden, können Sie sehen, dass sich die Zeichen geändert haben.
Da ich einen Haltepunkt in der Entwicklung festlegen und stoppen möchte, habe ich das Remote-Debugging festgelegt. Öffnen Sie zunächst Ausführen → Konfigurationen bearbeiten ... im IntelliJ-Menü. Wählen Sie Remote über die Schaltfläche + oben links aus. Drücken Sie mit den folgenden Einstellungen OK, um zu schließen.
build.gradle
bootRun {
// for remote debug
jvmArgs "-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=*:5005"
}
Da der 5005-Port für das Remote-Debugging verwendet wird, wird er beschrieben.
docker-compose.yml
ports:
- "8080:8080"
# for remote debug
- "5005:5005"
Machen Sie Docker-Comose erneut und überprüfen Sie, ob es sich im Standby-Zustand befindet.
web_1 | > Task :bootRun
web_1 | Listening for transport dt_socket at address: 5005
Setzen Sie in Application.java einen Haltepunkt in Hello World Wenn Sie auf http: // localhost: 8080 zugreifen, können Sie sehen, dass es an dieser Stelle stoppt.
Vorerst habe ich zusammengefasst, wie man es einfach baut.
Recommended Posts