java

关注公众号 jb51net

关闭
首页 > 软件编程 > java > idea调试远程docker的springboot项目

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

作者:wcdunf

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

开发环境

生产环境

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.

          

第二步:配置调试参数

第三步:启动调试

 

到此结束。

总结

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

您可能感兴趣的文章:
阅读全文