当前位置:  开发笔记 > 编程语言 > 正文

在Docker容器中调试Tomcat

如何解决《在Docker容器中调试Tomcat》经验,为你挑选了2个好方法。

我有一个在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

它从catalina.sh jpda start命令开始.运行它时控制台中的输出docker-compose是:

tomcat | Listening for transport dt_socket at address: 8000

从容器信息我假设端口按它们应该映射:

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

我的docker镜像基于这个Dockerfile.

问题

尝试运行远程调试配置时(下面的屏幕截图)我收到错误Error running Debug: Unable to open debugger port (192.168.111.1:8000): java.net.ConnectException "Connection refused".我已经尝试过改变各种配置但没有运气的一切.我错过了什么吗?

在此输入图像描述



1> Peter..:

这是我用于此的命令:

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

说明

-e JPDA_ADDRESS = 8000
容器中的调试端口,作为环境变量传递

-e JPDA_TRANSPORT = dt_socket
传输类型,用于调试为socket,作为环境变量传递

-p 8888:8080
在主机上将tomcat端口8080暴露为端口8888

-p 9000:8000
将主机上的java调试端口8000暴露为端口9000

-v {host-file}:{container-file}
用我的本地on覆盖tomcat-user.xml,因为我需要访问管理器api
omit this line如果你的用例不需要

tomcat:8.0
见https://hub.docker.com/_/tomcat/

/usr/local/tomcat/bin/catalina.sh jpda run
命令在容器中运行


设置JPDA_ADDRESS对于在docker中进行此操作至关重要.Tomcat默认绑定到localhost而不是0.0.0.0,因此无法公开调试端口.

2> bobmarksie..:

您可以随时将其更新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"]

这确实意味着,尽管您的docker文件默认情况下处于调试状态,这可能不适合生产环境。

推荐阅读
mobiledu2402852413
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有