【问题标题】:Failing to Debug Kotlin Tomcat web app with IntelliJ and docker无法使用 IntelliJ 和 docker 调试 Kotlin Tomcat Web 应用程序
【发布时间】:2019-11-20 07:33:51
【问题描述】:

我正在尝试使用 Spring Boot 远程调试一个简单的基于 Kotlin 的 tomcat Web 应用程序,该应用程序依赖于带有 IntelliJ 的 docker 容器。

应用代码是 -

package com.microservices.MyApp

import org.springframework.boot.autoconfigure.SpringBootApplication
import org.springframework.boot.runApplication
import org.springframework.web.bind.annotation.GetMapping
import org.springframework.web.bind.annotation.RestController

@SpringBootApplication
class MyAppApplication

@RestController
class GreetingsController
{
    @GetMapping("/")
    fun greetings() = "hello from Docker"
}

fun main(args: Array<String>)
{
    runApplication<MyAppApplication>(*args)
}

我在

上加了一个断点
fun greetings() = "hello from Docker"

就像一个简单的测试。当我在本地(不是通过 docker)运行应用程序时,当我转到 localhost:8080 时,断点工作正常

现在,为了让它与 docker 一起工作,我创建了一个 docker 文件 -

FROM openjdk:8-jdk-alpine
ADD target/*.jar microservice.jar
ENTRYPOINT ["java", "-jar", "microservice.jar"]

我有一个简单的 docker 编辑配置,当我运行时我提供“-d -p8080:8080”作为参数。我再次点击 localhost:8080,它工作正常。

现在,为了调试它,我创建了一个远程编辑配置,使用我上面提供的 docker 配置设置“在调试之前启动 docker”,将端口设置为 5005。我运行远程配置,启动正常,我点击了 localhost: 8080 - 工作正常。

所以我得到了我想要的输出。但是,当我在 greetings() 函数上设置断点时 - 与我在本地运行应用程序时(不是使用 docker 容器)不同,它无法触发断点。

我已经为远程配置(8000)尝试了不同的端口,但没有。我尝试在 docker config 中公开不同的端口,但什么也没有。当我使用 Docker 运行远程调试会话时,我只是无法触发该断点,但是当我在本地运行应用程序时,我确实设法轻松触发它。

有人知道会发生什么吗?我正在使用 IntelliJ 社区 2019.2.4

【问题讨论】:

    标签: spring docker debugging tomcat kotlin


    【解决方案1】:

    4 天后,我弄清楚发生了什么。我把它放在这里是为了让其他人知道他们是否遇到了同样的问题。

    你需要把它添加到你的 dockerfile 中

    ENV JAVA_TOOL_OPTIONS -agentlib:jdwp=transport=dt_socket,address=8000,server=y,suspend=n

    然后使用以下运行选项创建一个 docker 配置

    -d -p8080:8080 -p8000:8000

    使用端口 8000 创建远程配置

    在启动任何调试会话之前放置断点 - 它不会在运行时被选中

    然后,每当您希望调试您的 Dockerized Kotlin Spring Boot Tom Cat 应用程序时(比如说快 3 倍),首先启动 docker 配置,然后启动附加到它的调试远程。

    就是这样。

    【讨论】:

      猜你喜欢
      • 2017-02-24
      • 1970-01-01
      • 2016-05-26
      • 2017-12-04
      • 2023-03-16
      • 2017-10-23
      • 2019-12-15
      • 2017-02-07
      • 2015-09-29
      相关资源
      最近更新 更多