Aufbau der Spring Boot + Docker Java-Entwicklungsumgebung

Überblick

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)

Fertiges Produkt

https://github.com/tomoyuki-mikami/spring-boot-docker

Ausführungsmethode

$ cd docker
$ docker-compose up -d

Umgebung

MacOS Catalina 10.15.2 Docker for Mac 2.1.0.5 IntelliJ IDEA Ultimate 2019.3.1 OpenJDK 11 (installiert mit Homebrew)

Lokale Prozedur

Ein Projekt erstellen

Ohne IntelliJ

https://start.spring.io/ Wenn Sie hier die gleiche Auswahl treffen und "Generieren", wird sie als Zip heruntergeladen. Verwenden Sie diese Option.

Wenn Sie IntelliJ haben
  1. Erstellen Sie mit IntelliJ ein neues Projekt スクリーンショット 2019-12-29 10.44.27.png
  2. Java 11-Spezifikation, Spring Initializer ist standardmäßig スクリーンショット 2019-12-29 10.45.33.png
  3. Wählen Sie Gradle Config, Java, Jar, 11. Davon abgesehen スクリーンショット 2019-12-29 10.45.57.png
  4. Abhängigkeiten haben Folgendes ausgewählt, aber es ist nicht erforderlich, wenn Sie nur Hello World anzeigen möchten Später habe ich verschiedene Dinge eingegeben, um eine Verbindung zu MySQL herzustellen, eine Anmeldefunktion zu erstellen und eine Ansicht zu erstellen. Es wird nicht gestartet, nur Hello World zuerst anzuzeigen, daher habe ich es in build.gradle auskommentiert. スクリーンショット 2019-12-29 10.46.42.png
  5. Geben Sie den Projektnamen und den Speicherort an, um das Projekt zu erstellen スクリーンショット 2019-12-29 10.47.05.png
    Wenn Sie nun FINISH drücken, wird das Projekt automatisch erstellt und gradle wird beim ersten Mal ausgeführt. Wenn Sie ein aktuelles IntelliJ verwenden, wird das Verzeichnis unter src nicht automatisch erstellt. Erstellen Sie es daher manuell.

Hallo Welt erstellen

Ä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 {. スクリーンショット 2019-12-29 11.07.05.png

Ich muss auskommentieren, weil ich zu viele Dinge in Abhängigkeiten stecke und es vergebens funktioniert.

Kommentieren Sie einen Teil von build.gradle aus

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 Dockerfile, docker-compose.yml

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"

Starten der Docker-Umgebung

$ 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.

Remote-Debugging mit IntelliJ

IntelliJ-Einstellungen

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.

Fügen Sie build.gradle Folgendes hinzu

build.gradle


bootRun {
    // for remote debug
    jvmArgs "-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=*:5005"
}
Fix docker-compose.yml

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"
Docker starten

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. スクリーンショット 2019-12-29 17.28.56.png

abschließend

Vorerst habe ich zusammengefasst, wie man es einfach baut.

Recommended Posts

Aufbau der Spring Boot + Docker Java-Entwicklungsumgebung
Aufbau der Docker x Spring Boot-Umgebung
Java Entwicklungsumgebung Konstruktion
[Spring Boot] Umgebungskonstruktion (macOS)
Erstellen Sie mit Docker eine Spring Boot-Entwicklungsumgebung
Erstellen einer Datenbankumgebung mit Docker in Spring Boot (IntellJ)
Erstellen Sie eine Java + Spring-Entwicklungsumgebung mit VirtualBox + Ubuntu (Xfce4).
◆ Konstruktionsnotiz für Spring Boot + Gradle-Umgebung
[Java] Umgebungskonstruktion
Java-Entwicklungsumgebung
[Frühling] Umweltbau
Erstellen einer Spring Boot-Entwicklungsumgebung in Vagrant
[Processing x Java] Erstellen einer Entwicklungsumgebung
Spring Boot Umgebungskonstruktionsnotiz auf Mac
Aufbau einer Laravel-Entwicklungsumgebung mit Docker (Mac)
Erstellen Sie mit Docker eine Spring Boot-gradle-mysql-Entwicklungsumgebung
[Docker] Entwicklung der Entwicklungsumgebung Rails6 / Ruby2.7 / MySQL8
Versuchen Sie Spring Boot 1 (Umgebungskonstruktion ~ Tomcat-Start)
Memo zur Java-Entwicklungsumgebung
Aufbau der Rails Docker-Umgebung
Spring Boot Entwicklung-Entwicklungsumgebung-
Konstruktionsverfahren für die JAVA + STS-Umgebung (Spring Tool Suite)
Erstellen Sie eine Entwicklungsumgebung für Docker, Java und Code
Konstruktionsverfahren für LINE Bot x Java (Spring Boot)
Konstruktions- und Entwicklungsverfahren für lokale WordPress-Umgebungen mit Docker
Aufbau der Rails6-Entwicklungsumgebung [Mac]
WSL2 + VSCode + Docker-Entwicklungsumgebung
Erstellen Sie eine Java-Entwicklungsumgebung auf Mac-JDK Install (2020-Aufbewahrungsversion).
[Mac] VS Code-Entwicklungsumgebungskonstruktion (Java, Gradle, Node.js)
Konstruktionsnotiz für die MySQL 5.7 (Docker) -Umgebung
Java-Entwicklungsumgebung (Mac, Eclipse)
JavaFX-Umgebungskonstruktion in Java 13
Redmine (Docker) Umgebungskonstruktionsnotiz
CICS-Java-Anwendung ausführen- (4) Spring Boot-App
[Docker] Rails 5.2-Umgebungskonstruktion mit Docker
Spring Boot beginnend mit Docker
AtCoder Challenge-Umgebungskonstruktion (Java 8)
[Java] [Spring] Spring Boot 1.4-> 1.2 Downgrade Hinweis
Versuchen Sie, mit Docker eine Java-Entwicklungsumgebung zu erstellen
[Docker] postgres, pgadmin4-Umgebungskonstruktion
Docker x Java Erstellen einer zu einfachen Entwicklungsumgebung
Erstellung einer Webanwendungsentwicklungsumgebung in Java (für unerfahrene Personen)
Erstellung einer Java-Webanwendungsentwicklungsumgebung mit VS-Code (struts2)
Erstellen Sie eine Entwicklungsumgebung für Rails-Anwendungen mit Docker [Docker, Rails, Puma, Nginx, MySQL]
Einführung von Spring Boot2, einem Java-Framework für die Webentwicklung (für Anfänger)
Domänengesteuerte Entwicklung mit Java und Spring Boot-Layer und Modulabteilung
Erstellen Sie eine Java- und JavaScript-Teamentwicklungsumgebung (Gradle-Umgebungskonstruktion)
Erstellen Sie mit Java + Spring eine Web-APP-Entwicklungsumgebung mit Visual Studio Code
[Aufbau einer Java-Entwicklungsumgebung] Installieren Sie OpenJDK 11 (Java 11) unter macOS mit Homebrew
Erstellen Sie die Node.js-Umgebung mit Docker Compose
Spring Boot-Anwendungsentwicklung in Eclipse