使用 kotlin spring 和 docker 配置远程调试
Posted
技术标签:
【中文标题】使用 kotlin spring 和 docker 配置远程调试【英文标题】:Configure remote debug using kotlin spring and docker 【发布时间】:2020-09-08 02:36:47 【问题描述】:您好,我在我的应用程序中配置调试时遇到问题,我使用 docker 和 kotlin 一起使用 spring boot,请按照我的配置文件:
Dockerfile
FROM gradle:6.4-jdk14
RUN apt-get update && apt-get install -qq -y --no-install-recommends
ENV INSTALL_PATH /weblib
RUN mkdir -p $INSTALL_PATH
WORKDIR $INSTALL_PATH
COPY . .
RUN gradle clean && gradle bootJar
docker-compose.yml
version: "3.8"
services:
weblibdb:
image: "postgres:12.3"
environment:
- POSTGRES_DB=weblib
- POSTGRES_USERNAME=postgres
- POSTGRES_PASSWORD=postgres
volumes:
- postgres:/var/lib/postgresql/data
weblibapi:
build: .
command: bash start.sh
ports:
- "8090:8090"
- "5005:5005"
environment:
- POSTGRES_USERNAME=postgres
- POSTGRES_PASSWORD=postgres
- GRADLE_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=*:5005
volumes:
- .:/weblib
depends_on:
- weblibdb
volumes:
postgres:
start.sh
gradle bootRun
我的容器工作正常,在 IDE 中创建的远程调试与容器连接但断点不起作用,请按照我的配置:
谢谢
【问题讨论】:
【参考方案1】:我更改了我的配置和工作,按照我的更改:
从 Dockerfile 中删除以下命令:
RUN gradle clean && gradle bootJar
将我的 start.sh 更改为:
gradle clean
gradle bootJar
java -jar -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=*:5005 build/libs/weblib.jar
我是一个 docker-compose.yml,我在环境 GRADLE_OPTS
中将 suspend=y
更改为 suspend=n
,但它是可选的。
【讨论】:
以上是关于使用 kotlin spring 和 docker 配置远程调试的主要内容,如果未能解决你的问题,请参考以下文章
sh Git + Java + Spring Boot + Kotlin + Python + Node.js + Docker + Docker的安装脚本构建开发环境。
Spring Boot 2 和 Kotlin(使用 Maven)
如何使用 Kotlin、Gradle 和 Web 框架设置 Spring Loaded?
MapStruct 不使用 Kotlin 和 Spring Boot 自动装配,使用 Gradle 构建
如何在 Spring Boot 和 Spring WebFlux 中使用“功能 bean 定义 Kotlin DSL”?