开发环境
- 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.

第二步:配置调试参数
第三步:启动调试


到此结束。
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持代码网。
发表评论