Spring 访问容器外部的Tomcat调试端口

Spring 访问容器外部的Tomcat调试端口,spring,docker,tomcat,remote-debugging,tomcat9,Spring,Docker,Tomcat,Remote Debugging,Tomcat9,我有一个在tomcat服务器上运行java后端的容器。我想对其进行配置,以便可以附加eclipse来调试代码。 有很多文档,但有这么多不同和矛盾的答案,我找不到一个方法来做到这一点 以下是我当前的配置: DockerFile: From tomcat:9.0-jdk8-openjdk ADD ./application.war /usr/local/tomcat/webapps/ ADD tomcat-users.xml /usr/local/tomcat/conf/tomcat-use

我有一个在tomcat服务器上运行java后端的容器。我想对其进行配置,以便可以附加eclipse来调试代码。 有很多文档,但有这么多不同和矛盾的答案,我找不到一个方法来做到这一点

以下是我当前的配置:

DockerFile:

From tomcat:9.0-jdk8-openjdk
   
ADD ./application.war /usr/local/tomcat/webapps/
ADD tomcat-users.xml /usr/local/tomcat/conf/tomcat-users.xml
ADD server.xml /usr/local/tomcat/conf/server.xml
EXPOSE 9090
CMD ["catalina.sh","run"]
以及运行docker的命令:

docker run-d-p 9090:8080 myApp

我应该添加什么使我的应用程序可以被远程调试访问?

我找到的解决方案是: DockerFile

From tomcat:9.0-jdk8-openjdk
   
ADD ./application.war /usr/local/tomcat/webapps/
ADD tomcat-users.xml /usr/local/tomcat/conf/tomcat-users.xml
ADD server.xml /usr/local/tomcat/conf/server.xml
EXPOSE 9090
EXPOSE 9000
ENV JPDA_ADDRESS=8000
ENV JPDA_TRANSPORT=dt_socket

CMD ["catalina.sh", "jpda", "run"]
然后:
docker在构建映像后运行-d-p9090:8080-p9000:8000 myApp


警告:这使得应用程序只能从docker运行的服务器(在该示例中,在
localhost:9000
中)进行调试!我读到这与
*:JPDA_地址有关,但我无法让它工作。

这是否回答了你的问题
JPDA_ADDRESS=8000
仅适用于Java 8(参见)。更通用的解决方案是
JPDA\u ADDRESS=*:8000
。请注意,您正在导出错误的端口:in应该是
EXPOSE 8080
EXPOSE 8000
。不,我将公开映射的端口(请参阅下面的
docker run
命令)。我将尝试使用
*:
是的,您覆盖了默认端口映射,但是
EXPOSE
的目的是提供默认端口映射(参见..好吧,我学到了一些东西..因此基本上没有必要使用
EXPOSE
命令?它充当文档?