【发布时间】: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