CAP*_*OCK 20 debugging tomcat intellij-idea jpda
我有一个在Vagrant中运行的CoreOS.Vagrant专用网IP为192.168.111.1.CoreOS内部是一个Tomcat 8.0.32的docker容器.几乎一切正常(应用程序部署等)只是调试没有.Tomcat映射到8080端口,JPDA端口应为8000.
Tomcat JPDA配置有:
JDPA_OPTS -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=8000
Run Code Online (Sandbox Code Playgroud)
它从catalina.sh jpda start命令开始.运行它时控制台中的输出docker-compose是:
tomcat | Listening for transport dt_socket at address: 8000
Run Code Online (Sandbox Code Playgroud)
从容器信息我假设端口按它们应该映射:
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
dcae1e0148f8 tomcat "/run.sh" 8 minutes ago Up 8 minutes 0.0.0.0:8000->8000/tcp, 0.0.0.0:8080->8080/tcp tomcat
Run Code Online (Sandbox Code Playgroud)
我的docker镜像基于这个Dockerfile.
尝试运行远程调试配置时(下面的屏幕截图)我收到错误Error running Debug: Unable to open debugger port (192.168.111.1:8000): java.net.ConnectException "Connection refused".我已经尝试过改变各种配置但没有运气的一切.我错过了什么吗?
Pet*_*ter 30
这是我用于此的命令:
docker run -it --rm \
-e JPDA_ADDRESS=8000 \
-e JPDA_TRANSPORT=dt_socket \
-p 8888:8080 \
-p 9000:8000 \
-v D:/tc/conf/tomcat-users.xml:/usr/local/tomcat/conf/tomcat-users.xml \
tomcat:8.0 \
/usr/local/tomcat/bin/catalina.sh jpda run
Run Code Online (Sandbox Code Playgroud)
说明
Seb*_*amp 10
接受的答案对我不起作用,显然是因为我使用的是 Java 11。似乎如果您使用的是 Java 9 或更新版本,则需要像这样指定 JPDA 地址:
JPDA_ADDRESS=*:8100
Run Code Online (Sandbox Code Playgroud)
您可以随时将其更新Dockerfile为以下内容:-
FROM tomcat:8-jre8
MAINTAINER me
ADD target/app.war /usr/local/tomcat/webapps/app.war
ENV JPDA_ADDRESS="8000"
ENV JPDA_TRANSPORT="dt_socket"
EXPOSE 8080 8000
ENTRYPOINT ["catalina.sh", "jpda", "run"]
Run Code Online (Sandbox Code Playgroud)
这确实意味着,尽管您的docker文件默认情况下处于调试状态,这可能不适合生产环境。
| 归档时间: |
|
| 查看次数: |
15414 次 |
| 最近记录: |