将 IntelliJ IDEA 调试器附加到由 Arquillian 启动的 Wildfly Docker 图像

Attaching IntelliJ IDEA debugger to Wildfly Docker image started by Arquillian

我正在尝试使用 http://arquillian.org/arquillian-cube 扩展创建 Arquillian 单元测试,您可以在其中设置服务器端的断点。

我创建了一个成功执行简单测试的项目(所有详细信息都在这里):
https://github.com/scetix/arquillian-cube-wildfly-quickstart

有什么方法可以在测试开始时自动将 IntelliJ IDEA 调试器附加到 Docker 容器中的 Wildfly 运行?

自动地,我不这么认为。在 Docker 示例的情况下,从被视为远程服务器的 IDE 的角度来看。

所以您需要做的是首先启动 Wildfly 并启用调试 (http://tools.jboss.org/blog/2015-03-17-debugging-an-externally-launched-wildfly.html) and expose the debugger port correctly (https://github.com/scetix/arquillian-cube-wildfly-quickstart/blob/master/src/test/resources/Dockerfile#L12)。将这些行放入 Dockerfile:

# Expose JBoss/Wildfly management port
EXPOSE 9990
# Expose JBoss/Wildfly debug port
EXPOSE 8787

您还需要为 Docker Compose (https://github.com/scetix/arquillian-cube-wildfly-quickstart/blob/master/src/test/resources/docker-compose.yml#L5) 设置端口绑定。将调试器的端口 8787 添加到 YAML 文件(第一个数字 - 此处为 58787 - 可以是您喜欢的任何数字):

ports:
  - 58787:8787/tcp

最后将 IntelliJ 作为远程调试器启动,设置 Docker 主机的 IP(本地主机 Docker,Docker 机器 IP Docker机器)。

您可以查看如何使用 IntelliJ 执行此操作:http://blog.trifork.com/2014/07/14/how-to-remotely-debug-application-running-on-tomcat-from-within-intellij-idea/。该示例适用于 Tomcat;改为指定 JBoss。