Java >> Java tutorial >  >> Tag >> Spring

Spring Boot Docker Image Debugging

I denne artikel vil vi forklare, hvordan man fejlretter fjederstartapplikationen, der kører i docker-billedet. Vi vil se et eksempel på en fjederstartapplikation og fejlsøge den i docker-beholderen.

1. Opret en fjederstartapplikation

Opret et simpelt spring-boot-program ved hjælp af enhver IDE (i mit tilfælde bruger jeg IntelliJ IDEA) efter eget valg med grundlæggende konfiguration og afhængighed. Jeg bruger gradle til afhængighederne. Du kan også bruge Maven. Find filen build.gradle som vist nedenfor

build.gradle
plugins {
    id 'org.springframework.boot' version '2.4.0'
    id 'io.spring.dependency-management' version '1.0.10.RELEASE'
    id 'java'
}

group = 'com.jcg'
version = '1.0'
sourceCompatibility = '1.8'

repositories {
    mavenCentral()
}

dependencies {
    implementation 'org.springframework.boot:spring-boot-starter-web'
    testImplementation 'org.springframework.boot:spring-boot-starter-test'
}

test {
    useJUnitPlatform()
}

Den har en simpel controller med en simpel hilsen som vist nedenfor:

DockerController
package com.jcg.sampledocker;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class DockerController {

    @RequestMapping("/")
    public String greetings(@RequestParam String name) {
        String message =  " Hello " +name.toUpperCase() + ", from JCG";
        return message;
    }
}

Kør følgende kommando for at bygge applikationsjar-filen.

./gradlew clean build

Dette vil kompilere, bygge applikationen og generere den eksekverbare jar-fil i build/libs-mappen. Denne jar-fil bruges i de næste trin

2. Opret en docker-fil

Opret docker-filen og tilføj følgende linje som vist nedenforDockerfile

FROM openjdk:9-jre
ADD build/libs/sample-docker-1.0.jar .
EXPOSE 8080 5005
CMD java -jar sample-docker-1.0.jar

Her bruger vi basisbilledet som openjdk:9-jre til at bygge vores container. Den kopierer jar-filen til docker-billedet, så den er tilgængelig i beholderen. Vi afslører to af portene, som vist ovenfor. Den ene er standard (8080), og den anden er til fejlretning (5005). Endelig har vi kommandoen til at udføre, når docker-containeren kører.

3. Opret en docker-compose-fil

Opret nu en docker-komponeringsfil for at konfigurere applikationen. Tilføj følgende kode til docker-compose-filen. Det specificerer dybest set portene og agenten til fjernfejlfinding som vist nedenfordocker-compose.yml

services:
  web:
    build: .
    ports:
      - "8080:8080"
      - "5005:5005"
    command: java -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=*:5005 -jar sample-docker-1.0.jar

Her i kommandoafsnittet konfigurerer vi JVM til at tillade fejlfinding. Vi aktiverer agenten Java Debug Wire Protocol (JDWP) inde i JVM. Og for debug-forbindelserne er indstillet til 5005.

4. Kører applikationen

4.1 Konfigurer fjernfejlretningen

For at fejlfinde applikationen skal du først vedhæfte fjernfejlretningen. Du kan gøre dette i enhver IDE i kørselskonfigurationssektionen. Find venligst skærmbilledet nedenfor

Her, som vist på billedet ovenfor, bruger vi adresse som 5005 til at lytte til fejlretningsforbindelser

4.2 Kørsel af programmet

Vi kører applikationen ved hjælp af docker-compose som vist nedenfor

docker-compose up

Når du har kørt dette, kan du se, at serveren lytter til fejlretningsforbindelsen i port 5005 som vist

5. Fejlretning af programmet

Når serveren nu er begyndt at køre, skal du gå og klikke på den eksterne debugger, som du har indstillet i trin 4.1. Og tilføj derefter et breakpoint i controlleren og indtast url localhost:8080?name=abc i browseren. Du vil se styringen stoppe ved pausepunktet som vist nedenfor.

6. Resumé

I denne artikel diskuterede vi om debugging spring boot-applikationen i docker-billedet. Vi så en prøveapplikation og konfigurerede det samme til fejlretningen i containeren.

Du kan finde flere Spring boot tutorials her.

Dette var en artikel om, hvordan man fejlretter fjederstartapplikationen, der kører i docker-billedet.

havnearbejder

Java tag