Spring 访问容器外部的Tomcat调试端口
我有一个在tomcat服务器上运行java后端的容器。我想对其进行配置,以便可以附加eclipse来调试代码。 有很多文档,但有这么多不同和矛盾的答案,我找不到一个方法来做到这一点 以下是我当前的配置: DockerFile: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
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
命令?它充当文档?