idea调试远程docker中的springboot项目指南

 更新时间:2026年07月31日 09:40:33   作者:wcdunf  
还在为Docker环境下的Java远程调试头疼吗?本文手把手教你配置Java8和Java17项目的Docker远程调试,包括JVM参数设置、防火墙放行10002端口、阿里云安全组策略,以及IDEA远程调试的详细步骤,让你轻松定位生产环境问题

开发环境

  • idea-2023(放心,旧版本也可以远程调试)
  • Java版本:17

生产环境

  • docker版本:23.0.3
  • Java版本1:openjdk:17.0.2(基于Java17的项目)
  • Java版本2:adoptopenjdk:8-jdk-openj9(基于Java8的项目)

docker配置

Java8项目的docker配置

dockerFile

FROM adoptopenjdk:8-jdk-openj9
RUN mkdir -p /opt/projects/admin-api
RUN mkdir -p /var/lib/docker/containers/admin-api/
WORKDIR /opt/projects/admin-api
COPY ./admin-api.jar ./
#EXPOSE 2000
# 启动服务
ENV JAVA_OPTS="-server -Xms1024m -Xmx1024m -Xss256k -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=10002"
CMD java ${JAVA_OPTS} -Djava.security.egd=file:/prod/./urandom -jar admin-api.jar --spring.profiles.active=prod

在jar启动命令中加入JVM参数:

-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=10002

作用:启动时支持远程调试,监听10002端口,请确保该端口已被防火墙放行,阿里云服务器的安全策略中也要放行。

docker-compose.yml

  admin-api:
    build:
      context: admin-api
    container_name: admin-api
    environment:
      - TZ=Asia/Shanghai
      - JAVA_OPTS=-server -Xms1024m -Xmx1024m -Xss256k -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=10002
    hostname: admin-api
    image: admin-api
    networks:
      mall4j-network:
        ipv4_address: 192.168.159.9
    ports:
      - "8112:8112"
      - "10002:10002"
    restart: always
    volumes:
      - ./cert:/cert
      - ./admin-api/log:/opt/projects/admin-api/log

你会发现,dockerFile和docker-compose.yml中都有远程调试配置,实际上,docker-compose.yml会覆盖dockerFile。

Java17项目的docker配置

把  FROM adoptopenjdk:8-jdk-openj9   替换成   FROM openjdk:17.0.2

把   

-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=10002  

替换成:

-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=*:10002

开始调试

第一步:新建 远程JVM调试,旧版本idea新建Remote.

          

第二步:配置调试参数

第三步:启动调试

 

到此结束。

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • Java注解(Annotations)的定义和使用详解

    Java注解(Annotations)的定义和使用详解

    Java注解(Annotations)是Java5引入的一种元数据(Metadata),它提供了一种在源代码中嵌入补充信息的方式,这些信息可以被编译器、JVM或其他工具在编译时、运行时进行处理,注解本身不会直接影响程序的执行,但可以用来指导编译器、JVM或其他工具的行为,从而实现各种功能
    2025-03-03
  • 基于Springboot吞吐量优化解决方案

    基于Springboot吞吐量优化解决方案

    这篇文章主要介绍了基于Springboot吞吐量优化解决方案,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-09-09
  • SpringBoot项目如何将Bean注入到普通类中

    SpringBoot项目如何将Bean注入到普通类中

    这篇文章主要介绍了SpringBoot项目如何将Bean注入到普通类中,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-11-11
  • 详解Java中如何使用日志库在代码中添加日志

    详解Java中如何使用日志库在代码中添加日志

    这篇文章主要为大家介绍了Java中如何使用日志库在代码中添加日志详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-07-07
  • SpringBoot与Elasticsearch8.0集成的实现步骤

    SpringBoot与Elasticsearch8.0集成的实现步骤

    本文介绍了SpringBoot与Elasticsearch8.0的集成方法和最佳实践,详细探讨了Elasticsearch8.0的安全增强、性能优化、API改进等新特性,下面就一起来了解一下
    2026-04-04
  • Java 从json提取数组并转换为list的操作方法

    Java 从json提取数组并转换为list的操作方法

    这篇文章主要介绍了Java 从json提取出数组并转换为list,使用getJSONArray()获取到jsonarray后,再将jsonArray转换为字符串,最后将字符串解析为List列表,本文通过实例代码给大家详细讲解,需要的朋友可以参考下
    2022-10-10
  • Java中OAuth2.0第三方授权原理与实战

    Java中OAuth2.0第三方授权原理与实战

    本文主要介绍了Java中OAuth2.0第三方授权原理与实战,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-05-05
  • Spring Cloud原理详解

    Spring Cloud原理详解

    今天小编就为大家分享一篇关于Spring Cloud原理详解,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2019-02-02
  • IDEA中如何去掉Java方法注释后的空行

    IDEA中如何去掉Java方法注释后的空行

    本文介绍了如何在IntelliJIDEA中去掉Java方法注释后多余的空行,并提供了详细的操作步骤,通过修改设置,可以避免默认格式化过程中自动插入的空行,使Javadoc注释更加紧凑和清晰,符合个人或团队的代码规范
    2025-02-02
  • Android中Parcelable的作用实例解析

    Android中Parcelable的作用实例解析

    这篇文章主要介绍了Android中Parcelable的作用,对于Android初学者有一定的参考学习价值,需要的朋友可以参考下
    2014-08-08

最新评论