我对Docker非常陌生,所以这可能是我做错了一些简单的事情。有了所有的解决方案,当我使用'Docker run‘启动Tomcat容器时,我已经能够使用eclipse进行远程调试了。
docker run -it --rm -e JPDA_ADDRESS=8000 -e JPDA_TRANSPORT=dt_socket -p 8888:8080 -p 8000:8000 tomcat:8.0-jre8 /usr/local/tomcat/bin/catalina.sh jpda run
然而,当使用docker-compose时,我得到一个“无法连接到远程虚拟机。连接被拒绝”对话框。
docker-compose up
docker-compose.yml设置:
tomcat: image: tomcat:8.0-jre8 # START - REMOTE DEBUGGING SETTINGS # Didn't work with or without this network_mode setting. But the bridge settings as seen with 'docker container inspect *CID*' looks almost identical to the working solution network_mode: bridge environment: - JPDA_ADDRESS:8000 - JPDA_TRANSPORT:dt_socket entrypoint: /usr/local/tomcat/bin/catalina.sh jpda run # END - REMOTE DEBUGGING SETTINGS deploy: restart_policy: condition: on-failure placement: constraints: [node.role == manager] ports: - 8888:8080 # REMOTE DEBUGGING SETTINGS jpda port - 8000:8000
我使用'docker run‘的eclipse设置是:
Remote Java Application: Host: localhost Port: 8000
注意:使用docker-compose设置,我还可以在启动输出中看到预期的打印结果:
Listening for transport dt_socket at address: 8000
而且,对于这两种部署,我都可以通过公开的端口8888访问web服务的功能。即。这个简单的链接返回'Hello‘。
http://localhost:8888/MyEmulatorService/rest/MES/
有什么想法为什么我不能远程调试时,以这种方式启动?我怀疑在设置网络配置的方式上有细微的差别。
发布于 2017-07-29 08:44:02
我的一个朋友发现了这一点。即使启动输出使其看起来一切正常,并且catalina.sh使用的默认端口和传输是8000,dt_socket。
环境变量没有被传递到容器中,这导致了损坏。也许其他人可以解释一下这对.sh脚本有什么影响?
通过隧道进入容器并列出环境变量,可以检测到此问题。
docker exec -it *CID* bash
env对docker-compose.yml文件的更改现在如下所示:
environment:
JPDA_ADDRESS: 8000
JPDA_TRANSPORT: dt_socket发布于 2018-10-05 20:02:02
通常我们使用的是
environment:
- JAVA_OPTS= -agentlib:jdwp=transport=dt_socket,address=8000,server=y,suspend=nhttps://stackoverflow.com/questions/45383645
复制相似问题