我有一个基于opendjdk:8-slim的Docker容器,安装了Tomcat 9,我正在调试部署在那里的应用程序-- IDE (IntelliJ) -- IDE运行在Docker主机上。我使用以下配置运行Tomcat
CATALINA_OPTS="-Dcom.sun.management.jmxremote \
-Dcom.sun.management.jmxremote.port=49520 \
-Dcom.sun.management.jmxremote.rmi.port=49520 \
-Dcom.sun.management.jmxremote.ssl=false \
-Dcom.sun.management.jmxremote.authenticate=false \
-Dcom.sun.management.jmxremote.local.only=false \
-Djava.rmi.server.hostname=10.0.75.1 \
-agentlib:jdwp=transport=dt_socket,address=49540,suspend=n,server=y"一切都很好--我可以将IDE附加到容器上。另外,以下命令工作(从docker主机执行)-它可以连接到容器中的进程(容器中的端口49540映射到主机上的端口49540 ):
docker-host$ telnet localhost 49540现在我想升级到Java 9,我将基本映像从openjdk:8-slim更改为openjdk:9-slim,并且无法从docker主机连接到调试器端口。同样从IDE,我得到了SocketTimeoutException: Connection reset。但是,从容器内部,我可以通过telnet连接到调试器。
我尝试了来自openjdk存储库和其他repos (例如adenix/java )的Java9的几个映像,但不幸的是,结果是相同的。
发布于 2017-11-09 18:04:11
最后,我找到了一种使用Alan提供的评论中的信息使其工作的方法。
我没有在CATALINA_OPTS中设置调试设置( JDK 8没有出现问题),而是设置JPDA_OPTS="-agentlib:jdwp=transport=dt_socket,address=*:49540,server=y,suspend=n"并使用catalina.sh jpda run运行Tomcat。具体的IP地址(例如address=192.168.16.1:49540)仍然不适用于我,尽管IP地址可以从容器中访问。
发布于 2021-04-28 19:09:10
我在我的docker-compose.yaml环境变量中使用Java 9和Tomcat 9来运行
...
environment:
- "JPDA_ADDRESS=*:8000"
...以前,在Java 8中,我使用了:
...
environment:
- "JPDA_ADDRESS=8000"
...https://stackoverflow.com/questions/47168235
复制相似问题