Docker Java 开启Debug模式

Java 开启Debug模式

image-20221118171214936

启动镜像-Pvt

docker run -itd \
--entrypoint  /bin/sh  \
--volume /mnt/000.Docker/003.Lit_Information:/logs   \
--add-host pvt-mysql.litsoft.com.cn:172.17.112.126 \
--restart always   \
--memory 2g   \
--user root   \
--name Lit_manHour   \
--hostname Lit_manHour   \
-p 5005:5005   \
-p 10071:8080   \
hub.xxxx.com/project-name/manhour-test:v1.99


# 5005:Debug所需端口
# 10071:8080 服务端口

进入容器

docker exec -it Lit_manHour /bin/sh

开启Debug

java  -jar /Lit_manHour.jar

#示例
java -Xdebug -Xrunjdwp:transport=dt_socket,address=5005,server=y,suspend=n -Djava.security.egd=file:/dev/./urandom -Xms2g -Xmx2g -Xmn1500m -Xss256k -XX:SurvivorRatio=8 -XX:ParallelGCThreads=16  -XX:CMSFullGCsBeforeCompaction=20 -XX:+UseCMSCompactAtFullCollection -XX:+PrintGCDetails -jar /Lit_manHour.jar --spring.profiles.instaceId=1 --server.port=8080 --spring.profiles.active=pvt NACOS-ADDR=172.17.112.126:8849 SENTINEL-ADDR=172.17.112.126:8858


#示例
java -Xdebug -Xrunjdwp:transport=dt_socket,address=5005,server=y,suspend=n -Djava.security.egd=file:/dev/./urandom -Xms2g -Xmx2g -Xmn1500m -Xss256k -XX:SurvivorRatio=8 -XX:ParallelGCThreads=16  -XX:CMSFullGCsBeforeCompaction=20 -XX:+UseCMSCompactAtFullCollection -XX:+PrintGCDetails -jar /Lit_Reimburse.jar --spring.profiles.instaceId=1 --server.port=8080 --spring.profiles.active=pvt NACOS-ADDR=172.17.112.126:8849
docker run -itd \
--entrypoint  /bin/sh \
--volume /mnt/000.Docker/003.Lit_Information:/logs \
--add-host www.lit.redis.com:10.17.0.21 \
--add-host www.lit.nacos.com:10.17.0.21 \
--add-host www.lit.mysql.com:10.17.0.21 \
--restart always   --memory 2g   --user root  \
--name Lit_GateWay   --hostname Lit_GateWay  \
-p 5005:5005   -p 10000:8080  \
hub.xxxx.com/project-name/gateway-prod:v1.24

java -Xdebug -Xrunjdwp:transport=dt_socket,address=5005,server=y,suspend=n -jar /Lit_Gateway.jar --server.port=8080 --spring.profiles.active=dev -NACOS-ADDR=10.17.0.21:8848

启动镜像-UAT

docker run -itd \
--entrypoint  /bin/sh  \
--volume /mnt/000.Docker/003.Lit_Information:/logs \
--add-host www.lit.redis.com:10.17.0.21 \
--add-host www.lit.nacos.com:10.17.0.21 \
--add-host www.lit.mysql.com:10.17.0.21 \
--add-host Lit_GateWay:10.17.0.21 \
--net=host \
--user root \
--memory 2g \
--restart always \
--name Lit_GateWay \
--hostname Lit_GateWay \
-p 5005:5005   \
-p 10000:8080   \
hub.xxxx.com/project-name/gateway-prod:v1.24

进入容器

docker exec -it Lit_GateWay /bin/sh

开启Debug

java -Xdebug -Xrunjdwp:transport=dt_socket,address=5005,server=y,suspend=n -Djava.security.egd=file:/dev/./urandom -Xms2g -Xmx2g -Xmn1500m -Xss256k -XX:SurvivorRatio=8 -XX:ParallelGCThreads=16  -XX:CMSFullGCsBeforeCompaction=20 -XX:+UseCMSCompactAtFullCollection -XX:+PrintGCDetails -jar /Lit_manHour.jar --spring.profiles.instaceId=1 --server.port=8080 --spring.profiles.active=uat NACOS-ADDR=10.17.0.21:8848
nohup java -jar Lit_Gateway.jar  > ./logs/Lit_Gateway.log &
### Docker容器调试概述 对于Docker容器的调试,存在多种方法和技术来实现这一目标。早期Docker并未提供内置的调试支持,但随着社区的努力以及官方的功能增强,现在可以通过不同的途径来进行有效的调试工作[^2]。 #### 使用PyCharm进行本地Docker容器Debug 针对希望利用IDE的强大特性简化开发流程的情况,PyCharm提供了集成式的解决方案用于在本地环境中设置并调试基于Docker的应用程序。具体操作涉及拉取含有所需环境配置的Docker镜像,并按照特定指南完成PyCharm内部的相关设定以便于后续的断点调试等活动[^1]。 ```python # 示例:定义一个简单的Python脚本作为被调试对象 def main(): print("Starting debug session...") breakpoint() # 设置断点位置等待外部连接 print("After break point") if __name__ == "__main__": main() ``` 为了使上述代码能够在Docker环境下正常响应来自PyCharm IDE发出的调试请求,需确保: - 已经安装了适当版本的PyCharm Professional Edition。 - 正确设置了项目的解释器指向对应的Docker Compose服务或单独指定的Docker镜像中的Python路径。 - 配置好了相应的Run/Debug Configuration选项卡内的参数,比如主机地址、端口映射等信息。 #### 利用VSCode及其扩展包实现远程调试 除了PyCharm之外,Visual Studio Code (简称 VSCode)同样是一个非常受欢迎的选择之一。借助其丰富的插件生态系统,特别是Remote - Containers插件的支持下,开发者能够轻松地将编辑窗口直接挂载到正在运行的目标容器内执行命令行指令或是启动交互式会话的同时开启实时编码体验[^4]。 ```json // .devcontainer/docker-compose.yml 文件片段展示如何暴露必要的接口供外界访问 services: app: image: python:latest ports: - "8080:80" - "5678:5678" # 调试监听端口 volumes: - ..:/workspace:cached environment: PYTHONUNBUFFERED: 1 command: > sh -c "pip install ptvsd && python3 /workspace/app.py" ``` 此配置允许用户通过`ptvsd`库建立远控通道进而触发暂停机制直至满足预设条件为止。 #### Spring Boot应用下的Docker Debug实践 当涉及到Java领域尤其是Spring框架构建的服务时,则可参照专门面向此类场景设计的工作流说明文档。这通常意味着要调整应用程序本身的启动参数以启用JPDA传输协议从而让JVM实例愿意接受来自网络任意合法来源发起的连接尝试;与此同时还要注意防火墙策略是否会对整个过程造成阻碍影响最终效果呈现出来[^3]。 ```bash # 命令行示例:向docker run添加额外标志位激活远程调试模式 $ docker run \ -e JAVA_TOOL_OPTIONS="-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=*:5005" \ my-spring-boot-app-image-name ``` 以上就是几种常见的围绕着不同编程语言生态所展开讨论过的有关怎样更好地运用现有资源去解决实际遇到的问题——即如何高效便捷地对处于Docker化平台之上的各类软件制品实施深入探究性质的任务。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

WinJayX

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值